Actualmente estoy trabajando en un tablero para una planta de producción de una fábrica. Por un lado, me gustaría mostrar los agujeros que se perforan en el fuselaje o en el avión en un diagrama de dispersión 3D. Por otro lado, me gustaría mostrar las horas de inicio de cada trabajo de perforación, que es básicamente un diagrama de dispersión con algunas categorías en el eje vertical y tiempo continuo en el eje horizontal. Hay varios fuselajes en los datos, por lo que el primer paso es seleccionar uno. Después de la selección, un filtro de datos invisible oculta y excluye otros puntos. Básicamente, esto funciona bien, sin embargo, me encontré con un problema que no tengo idea de solucionar.
Hay varias máquinas que hacen la perforación. Me gustaría codificar con colores todos los puntos (tanto en el diagrama de dispersión 3D como en la línea de tiempo) según los programas de trabajo cargados en las máquinas. Cuando hago esto seleccionando :Identificación del trabajo como variable de color*, noto que los dos gráficos usan colores diferentes para cada :ID del trabajo. Cuando selecciono, por ejemplo, puntos rojos en la línea de tiempo, se seleccionan puntos azules en el diagrama de dispersión 3D.
How to make colors match between graphs?¿Cómo hacer que los colores coincidan entre gráficos?
Me pregunto si hay alguna forma de sincronizar/hacer coincidir colores en ambos gráficos. Cualquier idea es bienvenida. Estoy completamente estancado.
Además, perdón por la confusión, no estoy seguro de poder mostrar números reales, solo voy a lo seguro.
¡Gracias!
*: el gráfico de la línea de tiempo que proviene de una ventana del generador de gráficos tiene:
timeline = Graph Builder(
Size( 1300, 600 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Start Time Stamp ),
X( :Load Time Stamp, Position( 1 ) ),
Y( :Side ),
Y( :Longitudinal Location, Position( 1 ) ),
Y( :Machine, Position( 1 ) ),
Color( :Job ID )
),
Elements( Points( X( 1 ), X( 2 ), Y( 1 ), Y( 2 ), Y( 3 ) ) ),
),
y el diagrama de dispersión 3D tiene:
scatter = Scatterplot 3D(
Y( :x, :y, :z ),
Coloring( :Job ID ),
Show Controls( 0 ),
Frame3D(
Set Graph Size( 500, 500 ),
Set Grab Handles( 0 ),
Set Rotation( -54, 0, 38 )
),
),Saqué parte del código adicional que usé para eliminar las leyendas, establecer límites de ejes, etc. de los scripts anteriores. Distraen.
La idea de txnelson es bastante simple y elegante. Agregué colores de valor a la columna "ID de trabajo" y luego en el menú Filas usé "Color o Marcar por columna". E inmediatamente los colores aparecieron en el diagrama de dispersión 3D. La trama de la línea de tiempo tomó un poco más de esfuerzo para emparejar los colores. Utilicé dos variables en el eje horizontal y el generador de gráficos asigna automáticamente los colores a qué columna provienen los puntos y anula el color de la fila de la tabla. Pero una vez que incluí el Color (: Job ID) en el generador de gráficos, ¡todos los colores coincidieron perfectamente!
Ahora puedo convertir esto fácilmente en un script basado en lo que aprendí de la respuesta de vince_faller. Ambos fueron muy útiles.
¡Gracias a los dos!
Puedes hacerlo sobre la marcha con
Names Default to Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
//this will give you a legend
// the expression just makes it so it's live in both windows
legend = Expr(dt << Color By Column(:age));
//you have to make a custom report to show the proper legend
new window("Example",
Hlistbox(
bivariate(Y(:height), X(:weight),
Where(:age <= 14)
),
legend
),
Hlistbox(
bivariate(Y(:height), X(:weight),
Where(:age >= 13)
),
legend
)
);
Al menos esto debería darte una idea.
Si configura la propiedad de la columna Colores de valor para: ID de trabajo, tanto ScatterPlot 3D como Graph Builder usarán esos colores.