¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?
Los segmentos de GraphBuilder BoxPlot en JMP 14 y 15 parecen tener una etiqueta flotante integrada.
De forma interactiva, la etiqueta flotante se puede anclar.
Incrustado a continuación hay una imagen de una etiqueta flotante anclada y el script guardado asociado.
Estoy interesado en acceder a las vallas de BoxPlotSeg. No he encontrado la sintaxis JSL para acceder a los valores de valla. A partir del script guardado, de una sesión interactiva, parece evidente que estos valores de límite son inherentes a GraphBuilder. Sé cómo encontrar/calcular los valores de cerca para un gráfico de caja atípico. Sin embargo, si JMP ha expuesto los valores a través de GraphBuilder u otro método, me gustaría saber cómo acceder a los valores de valla.

Open( "$Sample_Data/Analgesics.jmp" ) <<
Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :drug ), Y( :pain ) ),
Elements( Points( X, Y, Legend( 5 ) ), Box Plot( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
Add Pin Annotation(
Seg( Box Plot Seg( 2 ) ),
Index( {1, 1} ),
Index Row( {1, 1} ),
UniqueID( 568563361 ),
FoundPt( {321, 356} ),
Origin( {1.14256198347107, 3.97321428571429} )
)
)
)
);
¡Gracias!
secuencias de comandosRe: ¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?@ian_jmp es correcto, mi objetivo es acceder a las vallas sin el mensaje anclado.
Sí, << Get Quantiles me ayudará a calcular los valores límite, los valores de datos máximos y mínimos dentro del rango de q50 +/- 1.5*(q75-q25). Así que no es difícil de calcular. Solo me preguntaba si había un método para acceder a ellos.
@SDF1 , aún no actualicé a 15.1 y vi que el comportamiento intermitente del despacho funcionaba o se ignoraba. Funcionaría como un guión y luego no. Abriría una nueva sesión y funcionaría.Tendré que actualizar a 15.1 para comprobar si persiste el mismo comportamiento. Supongo que el número de identificación que parece extraño es el problema.
@nascif_jmp , gracias por la respuesta <
En caso de que alguien esté siguiendo esta publicación, adjunté un script con un método para obtener las vallas de diagrama de caja con JSL (múltiples métodos para obtener cuantiles, etc.)
Names Default to Here(1);
dt = Open("$Sample_Data/Analgesics.jmp");
boxNodes = dt << Summary(
Group( :drug ),
Quantiles( 25, :pain ),
Median( :pain ),
Quantiles( 75, :pain ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" )
);
bmin = boxNodes << New Column("Lower Fence", numeric, continuous);
bmax = boxNodes << New Column("Upper Fence", numeric, continuous);
bq25 = column(boxNodes, "Quantiles25");
bq75 = column(boxNodes, "Quantiles75");
bq50 = column(boxNodes, "Median");
bidx = Column(boxNodes, "drug");
For(i=1, i<=nrow(boxNodes), i++,
ll = bq50[i] - 1.5*(bq75[i] - bq25[i]);
ul = bq50[i] + 1.5*(bq75[i] - bq25[i]);
idx = dt << get rows where( :drug == bidx[i] & ll <= :pain <= ul );
bmin[i] = min(dt:pain[idx]);
bmax[i] = max(dt:pain[idx]);
);
Produce la tabla que se muestra a continuación. Tenga en cuenta la tabla de datos Analgésicos, la columna "dolor" tiene un formato de visualización de 2 decimales; los valores de valla son los valores almacenados en las tablas.

Re: ¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?@gzmorgan0 dijo ' Estoy interesado en acceder a las vallas de BoxPlotSeg'. No sabía acerca de 'GetLocalContext', pero parece depender de que las anotaciones estén realmente presentes. Pero quizás 'GetMoments' y 'GetQuantiles', que devuelven una matriz, podrían ayudar.
Re: ¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?Hola @nascif_jmp ,
Sí, también necesito actualizar a 15.1 por otras razones: la versión actual no reconocerá todos los archivos en directorios en unidades de red compartidas. A veces ve 1, 2 o 6 archivos de los cientos que realmente hay. Aparentemente, también es un problema conocido con OneDrive. Me han dicho que 15.1 soluciona eso.
He estado esperando algún tiempo para que nuestra TI lo implemente, pero con cientos de usuarios en todo el mundo que usan JMP, me imagino que les llevará un poco de tiempo.
¡Gracias!,
SD
Re: ¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?Hola @SDF1 ,
Obtener contexto local se introdujo en 15.1. Copiar funciona, puede obtener el texto completo y analizarlo, aunque me doy cuenta de que no es ideal (por eso agregué Obtener contexto local luego).
Vi el problema con la anotación que no se muestra también. Afortunadamente funciona como se esperaba en 15.1.
Mira, ¡acabo de darte dos razones para actualizar tu instalación de JMP! 
Re: ¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?Hola @nascif_jmp ,
(Windows 10 Enterprise, 64 bits, JMP Pro 15.0.0)
Pensé que esta era una gran pregunta e intenté hacer otras cosas, pero no funcionó. Intenté ejecutar la secuencia de comandos, guardar la secuencia de comandos en la ventana de secuencias de comandos y luego buscar la información relevante dentro de la ventana de la ventana de secuencias de comandos. Sin embargo, eso estaba resultando bastante difícil.
De todas formas, gracias por tu respueta. Traté de ejecutar el script que me diste, y suceden dos cosas extrañas:
- Cuando trato de ejecutar el script tal como está, la sección de código "Enviar a informe (Dispatch (...))" en realidad no agrega la anotación de PIN al gráfico. Tengo que volver manualmente y hacerlo.
- Después de realizar lo anterior, cuando trato de ejecutar la línea hlec = gpin << Get Local Context(); JMP da este error en el registro: el objeto 'gpin' no reconoce el mensaje 'Obtener contexto local'; quizás te refieres a uno de estos: <<<<<<<
¿Alguna idea de por qué alguno de los dos no funciona correctamente?
Mi versión de JMP tampoco reconoce el comando Obtener contexto local cuando lo busco en el índice de secuencias de comandos, ¿quizás por eso el n.º 2 no funciona?
¡Gracias!,
SD
Re: ¿Hay un mensaje JSL para acceder a las etiquetas GraphBuilder BoxPlotSeg?Hola, @gzmorgan0 ,
Sí, es posible. Algunos de estos mensajes de anotación se agregaron recientemente para ayudar con nuestros marcos de prueba, pido disculpas si no se han documentado correctamente. Me aseguraré de investigar eso.
Por favor, vea el guión a continuación. Muestra cómo obtener el contenido de la anotación (que en este caso es una etiqueta flotante anclada) como un solo párrafo de texto (usando Copiar ) y como datos en forma de matriz asociativa (usando Obtener contexto local).Como puede ver, los datos de contexto de la etiqueta flotante incluyen más que solo las entradas visibles de la etiqueta flotante y son muy utilizados por Graphlet Presets. Creo que los usuarios avanzados podrán aprovecharlos para crear algunas aplicaciones JMP interactivas realmente interesantes. Para obtener más información sobre qué tipo de datos están disponibles, consulte:
https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/work-with-the-hover-label-execution-context.shtml
Names Default to Here(1);
dt = Open( "$Sample_Data/Analgesics.jmp" );
gb = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :drug ), Y( :pain ) ),
Elements( Points( X, Y, Legend( 5 ) ), Box Plot( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
Add Pin Annotation(
Seg( Box Plot Seg( 2 ) ),
Index( {1, 1} ),
Index Row( {1, 1} ),
UniqueID( 568563361 ),
FoundPt( {321, 356} ),
Origin( {1.14256198347107, 3.97321428571429} )
)
)
)
);
frame = (gb << Report)[FrameBox(1)];
gpin = frame << Get Annotation();
pinText = gpin << Copy();
Show(pinText);
hlec = gpin << Get Local Context();
Show(hlec);
Resultados del registro:
pinText = "
Maximum, excluding outliers: 16.636
75%: 12.93
50%: 9.418
25%: 7.84
Minimum, excluding outliers: 3.838
drug: B
N: 7";
hlec = ["_25%" => 7.84, <BR />"_50%" => 9.418, <BR />"_75%" => 12.93, <BR />"_dataTable" => Data Table( "Analgesics" ), <BR />"_displaySegName" => "BoxPlotSeg", <BR />"_drillDepth" => 1, <BR />"_drug" => "B", <BR />"_filters" => {:pain, :drug}, <BR />"_firstRow" => -1, <BR />"_groupings" => {:pain, :drug}, <BR />"_Maximum, excluding outliers" => 16.636, <BR />"_measurements" => {}, <BR />"_Minimum, excluding outliers" => 3.838, <BR />"_mode" => "Test", <BR />"_N" => 7, <BR />"_pain" => {7.84, 12.93}, <BR />"_summaryStatistic" => "", <BR />"_underlyingRows" => 7, <BR />"_where" => ":pain >= 7.84 & :pain < 12.93 & :drug == \!"B\!"", <BR />"_whereExpr" => Expr(
:pain >= 7.84 & :pain < 12.93 & :drug == "B"
)];