Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcadorEstimada comunidad JMP,
(W10 Enterprise de 64 bits, JMP Pro 15.0)
Tengo un usuario que usa el generador de gráficos para generar un gráfico bastante complejo que contiene varios bits de información. Los datos del mercado se dividen por región, cliente, etc. Como resultado, el diagrama de dispersión está codificado por colores y tiene múltiples marcadores. Como ejemplo, a continuación se muestra algo parecido al aspecto que podría tener el gráfico (usando Big Class Families.jmp).

Lo que me gustaría hacer es tomar sus gráficos originales del generador de gráficos y extraer de la leyenda el estilo y el color del marcador y configurarlos como propiedades dt. El propósito es que el usuario pueda ejecutar un poco de código JSL como un botón activo en su barra de herramientas que corregirá los marcadores y colores de los datos. La razón por la que esto es necesario es que desde Graph Builder, cada vez que el usuario usa el filtro de datos para cambiar regiones, la codificación de colores y los marcadores cambian para el conjunto de clientes porque la cantidad de clientes cambia dentro de cada región. Les gustaría tener esto como una propiedad fija de la columna de datos, por ejemplo.
Estaba probando un poco de código JSL como este en un intento de obtener la información de LegendBox(1) dentro de la estructura de árbol, pero obtengo un valor nulo como resultado de la línea: test = legend<
Names Default to here(1);
dt = Open("$Sample_Data/Big Class Families.jmp");
gb=dt<<GRAPH builder=""></GRAPH><BR />test = legend<<GET property=""></GET>Si la información de color está en RGB o lo que sea, está bien, no es necesario que sea un nombre como "azul" o "rojo".
Cualquier sugerencia sobre cómo proceder es muy apreciada.
Gracias,
SD
Re: Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcadorHola @MJE ,
Gracias por los comentarios adicionales. ¡Funciona! Gracias por la solución, lo marcaré como tal. Lo modifiqué solo un poco para que se parezca más a lo que pide el usuario, pero por lo demás, hace el trabajo. Por lo que puedo decir, la lista de marcadores y colores están en el mismo orden que la leyenda.
Aquí está la versión modificada de su código que utilicé:
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :age ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
segs = Report(gb)[Framebox(1)]<<FIND segs=""></FIND>
Y la salida que obtengo:
MarkerList = {"Círculo", "Más", "Diamante", "X", "Triángulo", "Y"};
ListaColores = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

¡Gracias!,
SD
Re: Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcadorTal vez esta parte aquí podría ayudarte. Al menos, le brinda información sobre qué punto de datos real en el gráfico tiene qué color y qué marcador. Desafortunadamente, no pude encontrar una manera de correlacionar directamente los puntos de datos (resp. el marcador seg) con los números de fila reales. Quizás alguien más tenga una idea de cómo hacerlo...
El mensaje "obtener marcador" se puede reemplazar por "obtener marcadores" para brindarle una lista de marcadores usados dentro de este segmento de marcador. Pero como son todos iguales en este estado, lo corto para una mejor legibilidad.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
//gb << show tree structure;//only for debugging and building the script
segs = Report( gb )[Framebox( 1 )] << Find Segs;
For ( i = 1, i <= n items (segs), i++,
seg = Report( gb )[Framebox( 1 )] << Find Seg( MarkerSeg(i) );
nx = seg << get x values;
ny = seg << get y values;
m = seg << get marker;
c = seg << get colors;
show (nx, ny, m, c);
);
Espero que esto ayude.
hermano
Malta
Re: Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcadorHola @MJE ,
Gracias por la respuesta. Desafortunadamente, no es exactamente lo que me interesa hacer. El usuario en realidad no ha cambiado el estado de la fila o el marcador, está permitiendo que Graph Builder lo haga automáticamente. Pero cada vez que se realiza un cambio, los colores y los marcadores cambian según los valores predeterminados de JMP. Quiero extraer la "configuración" de marcador y color que Graph Builder realiza automáticamente y luego aplicarla al dt para que se corrija y no se actualice cuando se realiza un cambio en Graph Builder. Quiero hacer esto automáticamente para facilitar al usuario.
Creo que es algo más cercano a MarkerSeg y <<
Estoy leyendo un poco sobre él ahora y tratando de modificar los ejemplos en el Índice de secuencias de comandos, usando el código modificado a continuación.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height, Row States(dt))
);
gb << show tree structure;//only for debugging and building the script
lgnd = (gb << Report)[FrameBox(1)];
markerseg = (lgnd<<FIND seg=""></FIND>
Pero, cuando lo ejecuto, obtengo el siguiente resultado para los marcadores: {"Punto", "Punto", "Punto", "Punto", "Punto", "Punto", "Punto", "Punto"}
Del gráfico que incluí en la publicación original, cada punto de datos NO es un "Punto".
¡Gracias!,
SD
Re: Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcadorHola @SDF1 ,
si entendí su problema correctamente, es posible que desee verificar los estados de fila.
<< copy from row states
y
<< copy to row states
le permite transferir información de estado de fila (como color, marcador, etc.) a una columna separada y nuevamente a los estados de fila (los ejemplos y la sintaxis se pueden encontrar en el índice de secuencias de comandos).
hermano
Malta