Quelqu'un d'autre est-il gêné par l'orientation du tableau de contingence et du tracé en mosaïque ? Je ne l'utilise pas, mais un de nos utilisateurs JMP souhaitait inverser l'orientation du tableau pour qu'il corresponde au tracé en mosaïque. J'ai découvert que si vous échangez X et Y, la table et le tracé en mosaïque sont mis à jour. Voir le script ci-dessous pour exécuter un exemple et les comparer côte à côte. Il semble que vous voudriez que les nombres du tableau s'alignent avec les cellules du tracé en mosaïque pour une visualisation et un référencement plus faciles. Je n'ai trouvé aucune discussion précédente. Il semble que le tableau de contingence ne puisse pas être modifié, c'est un CrossTabBox, qui ne se prête pas à quoi que ce soit. Le script ci-dessous contient dans la partie supérieure la solution de contournement, qui consiste à créer un clone de la table créée lors de la commutation de x et y, puis à l'ajouter au tracé en mosaïque. Il a également fallu faire un peu avec Value Ordering pour qu'il s'aligne. Sera ajouté à la liste de souhaits JMP. J'en ai discuté au JMP Discovery Summit 2018 avec le laboratoire EA et les développeurs.
J'ai trouvé quelques articles sur le langage R, dans lesquels vous pouvez utiliser l'argument dir() et spécifier l'horizontale et la verticale, tandis que la sortie "count" dans RStudio reste la même pour l'orientation.
# R Exemple de tracé en mosaïque - Changement de direction
obtenirwd()
employé <- read.csv("Products.csv", TRUE, sep = ",",
na.strings = VRAI)
count <- table (employé$EnglishCountryRegionName,
employé$Couleur)
compter
mosaïqueplot(count, main = "Pays Mosaïque Plot",
sub = "Couleurs du produit par pays",
xlab = "Couleurs",
ylab = "Pays",
las = 1,
dir = c("h", "v"),
couleur = "bleu ciel2",
bordure = "chocolat")
// For a contingency table report, swap the x and y
// currently can swap the mosaic plot only
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
myr = Contingency( Y( :Age ), X( :sex ) );
// Have to have a Contingency Analysis report open
// Can add test to make sure it is open in the future
myr = Current Report();
// taking apart CrossTabBox was easier using XML than JSL
mys = myr["Contingency Table"][CrossTabBox(1)] << Get XML;
// get current X role or rows of contingency table
start = Contains(mys,"<CROSSTABBOXROWSLABEL>")+22;
end = Contains(mys,"</CROSSTABBOXROWSLABEL>");
newY = Substr(mys,start,end-start);
// get current Y role or cols of contingency table
start = Contains(mys,"<CROSSTABBOXCOLSLABEL>")+22;
end = Contains(mys,"</CROSSTABBOXCOLSLABEL>");
newX = Substr(mys,start,end-start);
// Recreate same contingency table but with X and Y flipped
// also temporarily use Value Order to match the Mosaic Plot
myValueLabels = Reverse(Associative Array(Column(dt,newX)) << Get Keys);
Column(dt,newX) << Set Property("Value Ordering",myValueLabels);
tempCont = Contingency( Y(Column(dt,newY) ), X(Column(dt,newX) ), Contingency Table );
tempContr = tempCont << Report;
mycopy = tempContr["Contingency Table"][CrossTabBox(1)] << Clone Box;
tempCont << Close Window;
Column(dt,newX) << Delete Property("Value Ordering");
// remove the original contingency table and replace with transpose
myr["Contingency Table"][CrossTabBox(1)] << Delete;
myr["Contingency Table"] << Append(mycopy);
// show original side by side
obj = Contingency( Y( :Age ), X( :sex ) );
Report(obj)["Contingency Table"] << Set Title("Contingency Table - Current output");
myr["Contingency Table"] << Set Title("Contingency Table - Wish List for JMP16");
Salut @Vball247 , Merci pour votre suggestion! Nous avons enregistré votre demande et la prendrons en considération.
Salut Hegedus1. Excellente suggestion ! Mais je devais faire un pas de plus. Lorsque je fais le tracé en mosaïque, l'axe Y est de 0 à 1 ou en pourcentage, mais lorsque je clique sur l'axe Y, les ordres minimum, maximum et inverse sont grisés pour moi, aucune option à sélectionner. Je dois sélectionner la "Mosaïque horizontale", puis faire votre suggestion, qui peut changer l'ordre de celui catégorique tout en laissant l'axe cumulatif seul. Cela correspond finalement au tableau en dessous.
Contingency(
Y( :age ),
X( :sex ),
Contingency Table,
Horizontal Mosaic( 1 ), // swap the axes
SendToReport( Dispatch( {"Mosaic Plot"}, "1", ScaleBox, {Reversed Scale} ) ) // reverse the categories to match table
);
Il existe une solution plus simple.
Dans l'axe Y du tracé en mosaïque, sélectionnez l'axe inverse.
Ma demande/souhait : Faire de cette orientation une option dans les préférences de la plateforme de contingence.