Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilder
I segmenti GraphBuilder BoxPlot in JMP 14 e 15 sembrano avere un'etichetta al passaggio del mouse incorporata.
In modo interattivo, l'etichetta al passaggio del mouse può essere appuntata.
Di seguito è incorporata un'immagine di un'etichetta al passaggio del mouse bloccata e lo script salvato associato.
Sono interessato ad accedere alle recinzioni BoxPlotSeg. Non ho trovato la sintassi JSL per accedere ai valori di recinzione. Dallo script salvato, di una sessione interattiva, sembra evidente che questi valori di fencing sono inerenti a GraphBuilder. So come trovare/calcolare i valori di recinzione per un boxplot anormale. Tuttavia, se JMP ha esposto i valori tramite GraphBuilder o un altro metodo, vorrei sapere come accedere ai valori del recinto.

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} )
)
)
)
);
Grazie!
SceneggiaturaRi: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilder@ian_jmp è corretto, il mio obiettivo è accedere alle recinzioni senza il messaggio bloccato.
Sì, << Get Quantiles mi aiuterà a calcolare i valori di recinzione, i valori di dati massimi e minimi nell'intervallo di q50 +/- 1,5*(q75-q25). Quindi non è difficile da calcolare. Mi chiedevo solo se esistesse un metodo per accedervi.
@SDF1 , non ho ancora eseguito l'aggiornamento alla 15.1 e ho notato che il comportamento intermittente della spedizione funzionava o veniva ignorato. Funzionerebbe come uno script, quindi non lo farebbe. Vorrei aprire una nuova sessione e funzionerebbe.Dovrò aggiornare a 15.1 per verificare se lo stesso comportamento persiste. La mia ipotesi è il numero ID che sembra strano è il problema.
@nascif_jmp , grazie per la risposta <
Nel caso in cui qualcuno stia seguendo questo post, ho allegato uno script con un metodo per ottenere i boxplot fences con JSL (metodi multipli per ottenere quantili, ecc.)
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 tabella mostrata di seguito. Nota tabella dati Analgesici, la colonna "dolore" ha un formato di visualizzazione di 2 decimali; i valori di recinzione sono i valori memorizzati nelle tabelle.

Re: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilder@gzmorgan0 disse ' Sono interessato ad accedere alle recinzioni di BoxPlotSeg'. Non sapevo di "GetLocalContext", ma sembra basarsi sulle annotazioni effettivamente presenti. Ma forse "GetMoments" e "GetQuantiles", che restituiscono entrambi una matrice, potrebbero aiutare.
Ri: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilderCiao @nascif_jmp ,
Sì, devo aggiornare alla 15.1 anche per altri motivi: la versione attuale non riconoscerà tutti i file nelle directory su unità di rete condivise. A volte vede 1 o 2 o 6 file tra le centinaia che sono effettivamente presenti. Apparentemente, è anche un problema noto con OneDrive. Mi è stato detto che 15.1 lo risolve.
Ho aspettato un po' di tempo prima che il nostro IT venisse implementato, ma con centinaia di utenti in tutto il mondo che utilizzano JMP, immagino che ci vorrà un po' di tempo.
Grazie!,
ds
Ri: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilderCiao @SDF1 ,
Ottieni contesto locale è stato introdotto nel 15.1. copia funziona, puoi ottenere il testo completo e analizzarlo, anche se mi rendo conto che non è l'ideale (motivo per cui ho aggiunto Ottieni contesto locale dopo).
Ho visto anche il problema con l'annotazione che non veniva visualizzata. Fortunatamente funziona come previsto in 15.1.
Vedi, ti ho appena dato due motivi per aggiornare la tua installazione di JMP! 
Ri: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilderCiao @nascif_jmp ,
(Win 10 Enterprise, 64 bit, JMP Pro 15.0.0)
Ho pensato che fosse un'ottima domanda e ho provato a fare altre cose, ma non ha funzionato. Avevo provato a eseguire lo script, a eseguire un salvataggio dello script nella finestra di scripting e quindi a cercare le informazioni pertinenti all'interno della finestra di scripting. Tuttavia, si stava rivelando piuttosto difficile.
Comunque grazie per la tua risposta. Ho provato a eseguire lo script che hai fornito e ci sono due cose strane che accadono:
- Quando provo a eseguire lo script così com'è, la sezione di codice "Send To Report(Dispatch(...))" in realtà non aggiunge l'annotazione Pin al grafico. Devo tornare manualmente e farlo.
- Dopo aver eseguito quanto sopra, quando provo a eseguire la riga hlec = gpin << Get Local Context(); JMP fornisce questo errore nel log: L'oggetto 'gpin' non riconosce il messaggio 'Get Local Context'; forse intendi uno di questi: <<<<<<<
Qualche idea sul perché uno di questi non funziona correttamente?
La mia versione di JMP inoltre non riconosce il comando Ottieni contesto locale quando lo cerco nell'indice di script, forse è per questo che il numero 2 non funziona?
Grazie!,
ds
Re: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilderCiao, @gzmorgan0 ,
Sì, è possibile. Alcuni di questi messaggi di annotazione sono stati aggiunti molto di recente per aiutare con i nostri framework di test, mi scuso se non sono stati adeguatamente documentati. Mi assicurerò di esaminarlo.
Si prega di vedere lo script qui sotto. Mostra come ottenere il contenuto dell'annotazione (che in questo caso è un'etichetta fissata al passaggio del mouse) sia come un singolo paragrafo di testo (usando copia ) e come dati sotto forma di un array associativo (utilizzando Ottieni contesto locale).Come puoi vedere, i dati del contesto dell'etichetta al passaggio del mouse includono più delle semplici voci dell'etichetta al passaggio del mouse visibili e sono ampiamente utilizzati dai predefiniti Graphlet. Credo che gli utenti esperti potranno trarne vantaggio per creare alcune applicazioni JMP interattive davvero interessanti. Per maggiori informazioni sul tipo di dati disponibili, controlla:
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);
Risultati 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"
)];