Código de color Top 5Me gustaría codificar con colores mi tabla (para que todos los cuadros y gráficos que haga sigan el mismo). Pero quiero hacerlo de modo que los 5 primeros sean rojos, los 15 del medio sean amarillos y los 27 inferiores sean verdes. Tiene que haber una manera fácil de hacer esto.
A modo de contexto, tengo todos los datos de tasas de los CDC para diversas enfermedades que necesito realizar un seguimiento para 2014-2021. Necesito poder comparar los EE. UU. con cualquiera de los estados y mostrar si ese estado está entre los 5 primeros, en el medio o en el último lugar, en comparación con otros estados. En un mundo perfecto, la única fila de Estados Unidos siempre aparecería tan negra como el punto de referencia. He adjuntado los archivos de datos a continuación. Uno son los datos en columnas, el otro los tiene apilados.
Estoy usando JMP 17.
Exploración y visualización de datosCompartir y comunicar resultadosventanasRe: Código de colores Top 5Aquí hay un pequeño guión que muestra las agrupaciones superior, media e inferior y de EE. UU.
Lo hace por separado para cada año.Si eso no es lo que desea, entonces el guión se puede cambiar fácilmente eliminando las referencias del año.

Names Default To Here( 1 );
dt = Data Table( "All Items 2014-2021 Stacked" );
dtSum =
// → Data Table( "SummaryData" )
Data Table( "All Items 2014-2021 Stacked" ) << Summary(
Group( :State, :Year ),
Mean( :Data ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 ),
output table name( "SummaryData" )
);
dtSum << delete rows( dtSum << get rows where( :state == "United States" ) );
// Sort data table
dtSum = Data Table( "SummaryData" ) << Sort(
By( :Year, :"Mean(Data)"n ),
Replace Table,
Order( Ascending, Ascending )
);
DtSum << New Column( "Color Group",
character,
set each value(
If(
Col Cumulative Sum( 1, :Year ) <= 5, "Top",
Col Cumulative Sum( 1, :Year ) <= 20, "Middle",
"Bottom"
)
)
);
Data Table( "All Items 2014-2021 Stacked" ) << Update(
With( Data Table( "SummaryData" ) ),
Match Columns( :State = :State, :Year = :Year )
);
dt:Color Group[dt << get rows where( :Color Group == "" )] = "U.S.";
dt << delete column( :"Mean(Data)"n );
dt:color group << set property( "value colors", {"Bottom" = 20, "Middle" = 41, "Top" = 19, "U.S." = 0} );
dt << Graph Builder(
Size( 534, 464 ),
Show Control Panel( 0 ),
Variables( X( :State ), Y( :Data ), Color( :Color Group ) ),
Elements( Points( X, Y, Legend( 7 ) ) )
);
Re: Código de colores Top 5Esto ayuda mucho. Pero la primera parte de su script, donde genera los datos de resumen. ¿Qué significa N filas? Necesito saber que virus es cada uno.
Re: Código de colores Top 5La columna N filas le muestra cuántas columnas existen para un grupo en su tabla principal. En la captura de pantalla siguiente, la tabla de resumen le indica que hay 3 filas para Alabama en 2014, y así sucesivamente. Esto mezcla los diferentes virus en la columna Media (Datos).

Re: Código de colores Top 5Desafortunadamente, necesito todos los virus por separado. ¿Sería mejor tener cada virus en su propia tabla?
Re: Código de colores Top 5Separar cada virus en tablas de datos separadas sería una forma de manejar el problema.Luego ejecute el script para cada tabla de datos de virus.
También sería posible simplemente agregar Virus al script que proporcioné, junto con la agregación de Estado y Año, y realizaría los cálculos por separado para cada virus.
Re: Código de colores Top 5Así que ahora que lo tengo perfecto. Tengo una pregunta más. ¿Hay alguna manera de combinar mi columna de datos y mi columna de grupo de colores para que pueda ver los datos/números en la columna de datos, pero el color en esa celda sea el del grupo de colores?
Re: Código de colores Top 5El Scripting Index proporciona definiciones y ejemplos de todo la mayoría de las funciones y mensajes que se pueden utilizar en JSL.Aquí hay un fragmento simple de JSL para hacer lo que necesita; sin embargo, debe familiarizarse con el Índice de secuencias de comandos para poder descubrir sus propias respuestas.Ese es un proceso continuo para todos nosotros.
dt:color group << color cells("green", dt << get rows where(:color group =="Bottom"));
dt:color group << color cells("yellow", dt << get rows where(:color group =="Middle"));
dt:color group << color cells("red", dt << get rows where(:color group =="Top"));
dt:color group << color cells("black", dt << get rows where(:color group =="U.S."));Re: Código de colores Top 5La respuesta puede depender un poco de para qué estés usando la tabla (y los colores). Hay opciones de secuencias de comandos puras o puede hacer esto de forma interactiva: cuando tenga colores de valor en una de sus columnas, seleccione esa columna y vaya a Filas/Color o Marcar por columna.

luego presione OK en el menú.

Esto establecerá estos colores como estados de fila.

Haga clic derecho en esas filas y seleccione el color por estado de fila

ahora tienes todas las filas con esos colores.

Luego seleccione todas las columnas que no desea que tengan ese color, haga clic derecho en una de las celdas seleccionadas y haga que el color sea blanco.

Sin embargo, terminará con colores específicos como estados de fila en filas con este método y color en sus celdas (usará blanco para sobrescribir el color del estado de la fila)

También parece que JMP no puede registrar estas acciones para proporcionarle un script.
Editar:
Algunas ideas para secuencias de comandos se pueden ver en ¿Cómo utilizar JSL para establecer el degradado de color de una columna en formato de texto según el valor de una columna numérica?pero tu situación es un poco diferente
Editar2:
Aquí hay un método un poco más avanzado para colorear las celdas usando secuencias de comandos.
Names Default To Here(1);
dt = Open("$DOWNLOADS/All Items 2014-2021 Stacked.jmp");
color_property = Column(dt, "Color Group") << Get Property("Value Colors");
values = dt[0, "Color Group"];
For Each({color_prop}, color_property,
value = Arg(color_prop, 1);
color = Arg(color_prop, 2);
color_rows = dt << Get Rows Where(:Color Group == value);
:Data << color cells({color, color_rows});
);
Re: Código de colores Top 5¡¡¡Gracias!!! ¡¡¡Ya lo tengo perfecto!!!
Re: Código de colores Top 5Me alegra ver que estás solucionando el problema.Asegúrese de terminar su tarea haciendo lo siguiente:
- No se limite a cortar y pegar el código en su aplicación.Asegúrese de tomarse el tiempo para estudiar el JSL proporcionado y aprender cómo funcionan los diferentes elementos dentro del JSL.
- Vuelva a las respuestas que recibió y marque las que resolvieron el problema como SOLUCIÓN para que futuros lectores puedan llegar a la respuesta de la manera más eficiente posible.