Qualcun altro è infastidito dall'orientamento della tabella di contingenza e dalla trama del mosaico? Non lo utilizzo, ma uno dei nostri utenti JMP voleva invertire l'orientamento della tabella in modo che corrisponda alla trama del mosaico. Ho scoperto che se si scambiano X e Y, sia la tabella che la trama del mosaico si aggiornano. Vedi lo script qui sotto per eseguire un esempio e confrontarli fianco a fianco. Sembra che vorresti che i numeri nella tabella fossero allineati con le celle nel grafico a mosaico per una visualizzazione e un riferimento più facili. Non sono riuscito a trovare discussioni precedenti. Sembra che la tabella di contingenza non possa essere modificata, è un CrossTabBox, che non si presta a cambiare nulla. Lo script seguente ha nella parte superiore il lavoro da fare, che consiste nel creare un clone della tabella creata quando si scambiano x e y, e quindi aggiungerlo alla trama del mosaico. Inoltre ho dovuto fare un po' con l'ordinamento per valore per farlo allineare. Aggiungerà alla lista dei desideri di JMP. Ne ho discusso al JMP Discovery Summit 2018 con il laboratorio EA e gli sviluppatori.
Ho trovato alcuni post sul linguaggio R, in cui puoi utilizzare l'argomento dir() e specificare l'orizzontale e il verticale, mentre l'output "count" in RStudio rimane lo stesso per l'orientamento.
# R Esempio di grafico a mosaico: cambio di direzione
getwd()
dipendente <- read.csv("Prodotti.csv", TRUE, sep = ",",
na.stringhe = VERO)
count <- table(employee$EnglishCountryRegionName,
dipendente$Colore)
contare
mosaicplot(count, main = "Trama mosaico paesi",
sub = "Colori del prodotto per Paese",
xlab = "Colori",
ylab = "Paesi",
las = 1,
dir = c("h", "v"),
colore = "blu cielo2",
bordo = "cioccolato")
// 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");
Ciao Hegedus1. Ottimo suggerimento! Ma dovevo fare un altro passo. Quando eseguo il grafico a mosaico, l'asse Y va da 0 a 1 o percentuali, ma quando faccio clic sull'asse Y, l'ordine minimo, massimo e inverso sono disattivati per me, nessuna opzione da selezionare. Devo selezionare il "Mosaico orizzontale", quindi eseguire il tuo suggerimento, che può modificare l'ordine di quello categorico lasciando solo l'asse cumulativo. Questo si allinea finalmente con la tabella sottostante.
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
);
C'è una soluzione più semplice.
Nell'asse Y della trama del mosaico selezionare l'asse inverso.
La mia richiesta/desiderio: rendi questo orientamento un'opzione nelle preferenze della piattaforma di emergenza.