¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?
Los segmentos GraphBuilder BoxPlot en JMP 14 y 15 parecen tener una etiqueta flotante incorporada.
De forma interactiva, se puede fijar la etiqueta flotante.
A continuación se incluye una imagen de una etiqueta flotante fijada y el script guardado asociado.
Estoy interesado en acceder a las vallas de BoxPlotSeg. No encontré la sintaxis JSL para acceder a los valores de la valla. A partir del script guardado, de una sesión interactiva, parece evidente que estos valores de valla son inherentes a GraphBuilder. Sé cómo encontrar/calcular los valores de la valla para un BoxPlot de valores atípicos. 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 la 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!
Combinación y limpieza de datosLa personalización en masaRe: ¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?@ian_jmp es correcto, mi objetivo es acceder a las vallas sin el mensaje fijado.
Sí, << Get Quantiles me ayudará a calcular los valores de la barrera, los valores de datos máximos y mínimos dentro del rango de q50 +/- 1,5*(q75-q25). Por tanto, no es difícil de calcular. Simplemente me preguntaba si había un método para acceder a ellos.
@SDF1 , Todavía no actualicé a 15.1 y vi que el comportamiento intermitente del despacho funcionaba o era ignorado. 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 problema es el número de identificación, lo que parece extraño.
@nascif_jmp , gracias por la <
En caso de que alguien esté siguiendo esta publicación, adjunté un script con un método para obtener los límites del 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 la valla son los valores almacenados de las tablas.

Re: ¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?@gzmorgan0 dicho ' Estoy interesado en acceder a las vallas de BoxPlotSeg. No sabía acerca de 'GetLocalContext', pero parece depender de que las anotaciones estén presentes. Pero quizás 'GetMoments' y 'GetQuantiles', que devuelven una matriz, puedan ayudar.
Re: ¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?Hola @nascif_jmp ,
Sí, también necesito actualizar a 15.1 por otras razones: la versión actual no reconoce todos los archivos en directorios en unidades de red compartidas. A veces ve 1, 2 o 6 archivos de los cientos que realmente hay allí. 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 nuestro departamento de TI lo implemente, pero con cientos de usuarios en todo el mundo usando JMP, imagino que les llevará un poco de tiempo.
¡Gracias!,
DS
Re: ¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?Hola @SDF1 ,
Obtener contexto local se introdujo en 15.1. Copiar funciona, puedes obtener el texto completo y analizarlo, aunque me doy cuenta de que no es ideal (por eso agregué Obtener contexto local más tarde).
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: ¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?Hola @nascif_jmp ,
(Win 10 Enterprise, 64 bits, JMP Pro 15.0.0)
Pensé que era una gran pregunta e intenté hacer otras cosas, pero no funcionó. Intenté ejecutar el script, guardar el script en la ventana de scripting y luego buscar la información relevante dentro de la ventana de scripting. Sin embargo, eso estaba resultando bastante difícil.
De todas formas, gracias por tu respueta. Intenté ejecutar el script que me diste y suceden dos cosas extrañas:
- Cuando intento ejecutar el script tal como está, la sección de código "Enviar al informe (envío (...))" en realidad no agrega la anotación Pin al gráfico. Tengo que volver a entrar manualmente y hacerlo.
- Después de realizar lo anterior, cuando intento ejecutar la línea hlec = gpin << Get Local Context(); JMP muestra 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 ellos 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, ¿tal vez por eso el punto 2 no funciona?
¡Gracias!,
DS
Re: ¿Existe un mensaje JSL para acceder a las etiquetas de GraphBuilder BoxPlotSeg?Hola, @gzmorgan0 ,
Sí, es posible. Algunos de estos mensajes de anotaciones se agregaron recientemente para ayudar con nuestros marcos de prueba. Pido disculpas si no se han documentado adecuadamente. Me aseguraré de investigar eso.
Consulte el guión a continuación. Muestra cómo obtener el contenido de la anotación (que en este caso es una etiqueta flotante fijada) 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 los ajustes preestablecidos de Graphlet los utilizan mucho. Creo que los usuarios avanzados podrán aprovecharlos para crear algunas aplicaciones JMP interactivas y 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"
)];