Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?
GraphBuilder BoxPlot-Segmente in JMP 14 und 15 scheinen über eine integrierte Hover-Beschriftung zu verfügen.
Interaktiv kann das Hover-Label angepinnt werden.
Unten eingebettet ist ein Bild eines angehefteten Hover-Labels und des zugehörigen gespeicherten Skripts.
Ich bin am Zugriff auf die BoxPlotSeg-Zäune interessiert. Ich habe die JSL-Syntax für den Zugriff auf die Zaunwerte nicht gefunden. Aus dem gespeicherten Skript einer interaktiven Sitzung geht hervor, dass diese Zaunwerte dem GraphBuilder inhärent sind. Ich weiß, wie man die Zaunwerte für einen Outlier-BoxPlot findet/berechnet. Wenn JMP die Werte jedoch über GraphBuilder oder eine andere Methode verfügbar gemacht hat, würde ich gerne wissen, wie ich auf die Zaunwerte zugreifen kann.

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} )
)
)
)
);
Danke schön!
Datenmischung und -bereinigungMassenanpassungBetreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?@ian_jmp ist richtig, mein Ziel ist es, ohne die angeheftete Nachricht auf die Zäune zuzugreifen.
Ja, << Get Quantiles hilft mir bei der Berechnung der Zaunwerte, der maximalen und minimalen Datenwerte im Bereich von q50 +/- 1,5*(q75-q25). Es ist also nicht schwer zu berechnen. Ich habe mich nur gefragt, ob es eine Methode gibt, auf sie zuzugreifen.
@SDF1 , ich habe noch kein Upgrade auf 15.1 durchgeführt und habe festgestellt, dass der Dispatch zeitweise funktioniert oder ignoriert wird. Es würde als Skript funktionieren, dann nicht. Ich würde eine neue Sitzung eröffnen und es würde funktionieren.Ich muss auf 15.1 aktualisieren, um zu prüfen, ob das gleiche Verhalten weiterhin besteht. Ich vermute, dass es sich um die seltsam erscheinende ID-Nummer handelt.
@nascif_jmp , vielen Dank für die <
Falls jemand diesen Beitrag verfolgt, habe ich ein Skript mit einer Methode angehängt, um die Boxplot-Zäune mit JSL zu erhalten (mehrere Methoden, um Quantile usw. zu erhalten).
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]);
);
Es wird die unten gezeigte Tabelle erstellt. Beachten Sie die Datentabelle Analgetika, Spalte „Schmerz“ hat ein Anzeigeformat von 2 Dezimalstellen; Die Zaunwerte sind die in der Tabelle gespeicherten Werte.

Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?@gzmorgan0 sagte ' Ich interessiere mich für den Zugriff auf die BoxPlotSeg-Zäune. Ich wusste nichts über „GetLocalContext“, aber es scheint darauf zu beruhen, dass tatsächlich Anmerkungen vorhanden sind. Aber vielleicht könnten „GetMoments“ und „GetQuantiles“, die beide eine Matrix zurückgeben, helfen.
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?Hallo @nascif_jmp ,
Ja, ich muss auch aus anderen Gründen auf 15.1 aktualisieren: Die aktuelle Version erkennt nicht alle Dateien in Verzeichnissen auf freigegebenen Netzwerklaufwerken. Manchmal werden von den Hunderten, die tatsächlich vorhanden sind, nur eine, zwei oder sechs Dateien erkannt. Anscheinend ist es auch bei OneDrive ein bekanntes Problem. Mir wurde gesagt, dass 15.1 das behebt.
Ich habe einige Zeit darauf gewartet, dass unsere IT es einführt, aber da Hunderte von Benutzern auf der ganzen Welt JMP verwenden, kann ich mir vorstellen, dass es etwas Zeit in Anspruch nehmen wird.
Danke!,
DS
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?Hallo @SDF1 ,
Erhalten Sie lokalen Kontext wurde in 15.1 eingeführt. Kopieren funktioniert, Sie können den vollständigen Text abrufen und analysieren, obwohl mir klar ist, dass er nicht ideal ist (weshalb ich hinzugefügt habe). Erhalten Sie lokalen Kontext später).
Mir ist aufgefallen, dass die Anmerkung auch nicht angezeigt wurde. Glücklicherweise funktioniert es in 15.1 wie erwartet.
Sehen Sie, ich habe Ihnen gerade zwei Gründe genannt, Ihre JMP-Installation zu aktualisieren! 

Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?Hallo @nascif_jmp ,
(Win 10 Enterprise, 64-Bit, JMP Pro 15.0.0)
Ich fand das eine wirklich tolle Frage und habe noch ein paar andere Dinge ausprobiert, aber es hat nicht geklappt. Ich habe versucht, das Skript auszuführen, ein Skript im Skriptfenster zu speichern und dann im Skriptfenster nach den relevanten Informationen zu suchen. Das erwies sich jedoch als ziemlich schwierig.
Wie dem auch sei, vielen Dank für Ihre Antwort. Ich habe versucht, das von Ihnen angegebene Skript auszuführen, und es passieren zwei seltsame Dinge:
- Wenn ich versuche, das Skript einfach so auszuführen, wie es ist, hängt der Codeabschnitt „Send To Report(Dispatch(...))“ die Pin-Anmerkung nicht wirklich an das Diagramm an. Ich muss manuell zurückgehen und es tun.
- Nachdem ich das oben Gesagte ausgeführt habe, versuche ich, die Zeile hlec = gpin << Get Local Context(); auszuführen. JMP gibt diesen Fehler im Protokoll aus: Das Objekt „gpin“ erkennt die Meldung „Lokalen Kontext abrufen“ nicht; Vielleicht meinen Sie eines davon: <<<<<<<
Irgendwelche Ideen, warum beides nicht richtig funktioniert?
Meine JMP-Version erkennt den Befehl „Lokalen Kontext abrufen“ auch nicht, wenn ich im Skriptindex danach suche. Vielleicht funktioniert #2 deshalb nicht?
Danke!,
DS
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels?Hallo, @gzmorgan0 ,
Ja, es ist möglich. Einige dieser Anmerkungsmeldungen wurden erst kürzlich hinzugefügt, um unsere Test-Frameworks zu unterstützen. Ich entschuldige mich, wenn sie nicht ordnungsgemäß dokumentiert wurden. Ich werde das unbedingt prüfen.
Bitte sehen Sie sich das Skript unten an. Es zeigt, wie man den Inhalt der Anmerkung (in diesem Fall ein angeheftetes Hover-Label) als einzelnen Textabsatz erhält (mit Kopieren ) und als Daten in Form eines assoziativen Arrays (using Lokalen Kontext abrufen).Wie Sie sehen können, umfassen die Hover-Label-Kontextdaten mehr als nur die sichtbaren Hover-Label-Einträge und werden von Graphlet-Voreinstellungen häufig verwendet. Ich glaube, dass Power-User sie nutzen können, um einige wirklich interessante, interaktive JMP-Anwendungen zu erstellen. Weitere Informationen darüber, welche Art von Daten verfügbar sind, finden Sie unter:
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);
Protokollergebnisse:
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"
)];