Cómo obtener información del cuadro de leyenda, como el color y el tipo de marcadorQuerida comunidad JMP,
(W10 Empresa de 64 bits, JMP Pro 15.0)
Tengo un usuario que utiliza el generador de gráficos para generar un gráfico bastante complejo que contiene múltiples 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 a cómo se vería el gráfico (usando Big Class Families.jmp).

Lo que me gustaría hacer es tomar sus trazados originales del generador de gráficos y extraer de la leyenda el estilo y el color del marcador y establecerlos como propiedades dt. El propósito es que el usuario pueda ejecutar un fragmento de código JSL como un botón de acceso rápido en su barra de herramientas que arreglará 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 de región, el código de color 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 será muy apreciada.
Gracias,
DS
Re: Cómo obtener información del cuadro de leyenda, como color y tipo de marcadorHola @MJE ,
Gracias por los comentarios adicionales. ¡Funciona! Gracias por la solución, la marcaré como tal. Lo modifiqué ligeramente para que se pareciera 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á 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 el resultado 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!,
DS
Re: Cómo obtener información del cuadro de leyenda, como color y tipo de marcadorQuizás esta parte aquí pueda ayudarte. Al menos, le proporciona cierta información sobre qué punto de datos real en el gráfico tiene qué color y marcador. Desafortunadamente, no pude encontrar una manera de correlacionar directamente los puntos de datos (respectivamente el segmento marcador) 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 todos son iguales en este estado, lo acorté para facilitar la lectura.
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 color y tipo de marcadorHola @MJE ,
Gracias por la respuesta. Desafortunadamente, no es exactamente lo que me interesa hacer. En realidad, el usuario 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 marcadores cambian según los valores predeterminados de JMP. Quiero extraer las "configuraciones" de marcador y color que Graph Builder realiza automáticamente y luego aplicarlas al dt para que se arregle 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 esto ahora e intentando 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 Markerseg: {"Punto", "Punto", "Punto", "Punto", "Punto", "Punto", "Punto", "Punto"}
Según el gráfico que incluí en la publicación original, cada punto de datos NO es un "Punto".
¡Gracias!,
DS
Re: Cómo obtener información del cuadro de leyenda, como color y tipo de marcadorHola @SDF1 ,
Si entendí su problema correctamente, es posible que desee verificar los estados de las filas.
<< copy from row states
y
<< copy to row states
le permite transferir información del estado de la fila (como color, marcador, etc.) a una columna separada y nuevamente a los estados de la fila (se pueden encontrar ejemplos y sintaxis en el índice de secuencias de comandos).
hermano
Malta