¿A alguien más le molesta la orientación de la tabla de contingencia y el diagrama de mosaico? No lo uso, pero uno de nuestros usuarios de JMP quería cambiar la orientación de la tabla para que coincida con el diagrama de mosaico. Descubrí que si intercambias X e Y, tanto la tabla como el diagrama de mosaico se actualizan. Consulte el script a continuación para ejecutar un ejemplo y compararlos uno al lado del otro. Parece que le gustaría que los números de la tabla se alineen con las celdas del gráfico de mosaico para facilitar la visualización y la referencia. No pude encontrar ninguna discusión anterior. Parece que la tabla de contingencia no se puede cambiar, es un CrossTabBox, que no se presta a cambiar nada. El siguiente script tiene en la parte superior la solución alternativa, que consiste en hacer un clon de la tabla creada al cambiar x e y, y luego agregarlo al diagrama de mosaico. También tuve que hacer un poco con Value Ordering para que se alineara. Se agregará a la lista de deseos de JMP. Discutí en JMP Discovery Summit 2018 con el laboratorio de EA y los desarrolladores.
Encontré algunas publicaciones en lenguaje R, donde puede usar el argumento dir() y especificar la horizontal y la vertical, mientras que la salida de "recuento" en RStudio permanece igual para la orientación.
# R Ejemplo de trazado de mosaico: cambio de dirección
obtenerwd()
empleado <- read.csv("Productos.csv", VERDADERO, sep = ",",
na.cadenas = VERDADERO)
recuento <- tabla(empleado$EnglishCountryRegionName,
empleado$Color)
contar
mosaicplot(count, main = "Gráfico de mosaico de países",
sub = "Colores del producto por país",
xlab = "Colores",
ylab = "Países",
las = 1,
directorio = c("h", "v"),
color = "azul cielo2",
borde = "chocolate")
// 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");