Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilder
I segmenti BoxPlot di GraphBuilder in JMP 14 e 15 sembrano avere un'etichetta incorporata al passaggio del mouse.
In modo interattivo, l'etichetta al passaggio del mouse può essere bloccata.
Di seguito è incorporata l'immagine di un'etichetta al passaggio del mouse e dello script salvato associato.
Sono interessato ad accedere ai recinti BoxPlotSeg. Non ho trovato la sintassi JSL per accedere ai valori del recinto. Dallo script salvato, di una sessione interattiva, sembra evidente che questi valori di recinzione sono inerenti al GraphBuilder. So come trovare/calcolare i valori del recinto per un BoxPlot anomalo. 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!
Combinazione e pulizia dei datiPersonalizzazione di massaRi: 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ì, << Ottieni Quantili mi aiuterà a calcolare i valori del recinto, i valori dei dati massimo e minimo 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 versione 15.1 e ho notato che il comportamento intermittente del dispatch funzionava o veniva ignorato. Funzionerebbe come una sceneggiatura, quindi non funzionerebbe. Vorrei aprire una nuova sessione e funzionerebbe.Dovrò eseguire l'aggiornamento alla 15.1 per verificare se lo stesso comportamento persiste. La mia ipotesi è che il problema sia il numero ID che sembra strano.
@nascif_jmp , grazie per la risposta <
Nel caso in cui qualcuno stia seguendo questo post, ho allegato uno script con un metodo per ottenere le recinzioni del boxplot 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 del recinto sono i valori memorizzati nelle tabelle.

Ri: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilder@gzmorgan0 disse ' Sono interessato ad accedere alle recinzioni BoxPlotSeg'. Non sapevo di "GetLocalContext", ma sembra fare affidamento sulla presenza effettiva delle annotazioni. Ma forse "GetMoments" e "GetQuantiles", che restituiscono entrambi una matrice, potrebbero essere d'aiuto.
Ri: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilderCIAO @nascif_jmp ,
Sì, devo eseguire l'aggiornamento alla 15.1 anche per altri motivi: la versione attuale non riconoscerà tutti i file nelle directory sulle unità di rete condivise. A volte vede 1 o 2 o 6 file tra le centinaia che sono effettivamente presenti. Apparentemente, è un problema noto anche con OneDrive. Mi è stato detto che la versione 15.1 risolve questo problema.
Ho aspettato un po' di tempo prima che il nostro reparto IT lo implementasse, 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 il contesto locale è stato introdotto in 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 il contesto locale Dopo).
Ho visto anche il problema con l'annotazione che non veniva visualizzata. Fortunatamente funziona come previsto nella 15.1.
Vedi, ti ho appena fornito due motivi per aggiornare la tua installazione 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 davvero un'ottima domanda e ho provato a fare altre cose, ma non ha funzionato. Avevo provato a eseguire lo script, a salvare lo script nella finestra di scripting e quindi a cercare le informazioni pertinenti all'interno della finestra 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 succedono due cose strane:
- Quando provo a eseguire lo script così com'è, la sezione del codice "Invia a report(Dispatch(...))" in realtà non aggiunge l'annotazione Pin al grafico. Devo rientrare manualmente e farlo.
- Dopo aver eseguito quanto sopra, quando provo a eseguire la riga hlec = gpin << Get Local Context(); JMP restituisce questo errore nel registro: L'oggetto 'gpin' non riconosce il messaggio 'Ottieni contesto locale'; forse intendi uno di questi: <<<<<<<
Qualche idea sul perché uno di questi non funziona correttamente?
Inoltre, la mia versione di JMP non riconosce il comando Ottieni contesto locale quando lo cerco nell'indice degli script, forse è per questo che il punto 2 non funziona?
Grazie!,
DS
Ri: Esiste un messaggio JSL per accedere alle etichette BoxPlotSeg di GraphBuilderCiao, @gzmorgan0 ,
Sì, è possibile. Alcuni di questi messaggi di annotazione sono stati aggiunti 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 consultare lo script qui sotto. Mostra come ottenere il contenuto dell'annotazione (che in questo caso è un'etichetta fissata al passaggio del mouse) sia come paragrafo di testo singolo (utilizzando copia ) e come dati sotto forma di array associativo (utilizzando Ottieni contesto locale).Come puoi vedere, i dati contestuali dell'etichetta al passaggio del mouse includono più delle semplici voci dell'etichetta al passaggio del mouse e sono ampiamente utilizzati dai preset Graphlet. Credo che gli utenti esperti potranno trarne vantaggio per creare alcune applicazioni JMP interattive davvero interessanti. Per ulteriori informazioni sul tipo di dati disponibili, consultare:
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"
)];