Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels
GraphBuilder BoxPlot-Segmente in JMP 14 und 15 scheinen ein integriertes Hover-Label zu haben.
Interaktiv kann das Hover-Label gepinnt werden.
Unten eingebettet ist ein Bild eines gepinnten Hover-Labels und des zugehörigen gespeicherten Skripts.
Ich interessiere mich für den Zugriff auf die BoxPlotSeg-Zäune. Ich habe keine JSL-Syntax gefunden, um auf die Zaunwerte zuzugreifen. Aus dem gespeicherten Skript einer interaktiven Sitzung scheint ersichtlich, 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} )
)
)
)
);
Vielen Dank!
SkripterstellungBetreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-Labels@ian_jmp richtig ist, 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 nicht auf 15.1 aktualisiert, und ich habe gesehen, dass das zeitweilige Verhalten des Versands funktioniert oder ignoriert wird. Es würde als Skript funktionieren, dann nicht. Ich würde eine neue Sitzung öffnen und es würde funktionieren.Ich muss auf 15.1 aktualisieren, um zu überprüfen, ob das gleiche Verhalten weiterhin besteht. Meine Vermutung ist, dass die ID-Nummer, die seltsam erscheint, das Problem ist.
@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 zu erhalten usw.)
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 erzeugt die unten gezeigte Tabelle. Beachten Sie die Datentabelle Analgetika, Spalte "Schmerz" hat ein Anzeigeformat von 2 Dezimalstellen; Die Zaunwerte sind die in den Tabellen 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 sich auf tatsächlich vorhandene Anmerkungen zu verlassen. Aber vielleicht helfen 'GetMoments' und 'GetQuantiles', die beide eine Matrix zurückgeben.
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-LabelsHi @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 Netzlaufwerken. Manchmal sieht es 1 oder 2 oder 6 Dateien von den Hunderten, die tatsächlich vorhanden sind. Anscheinend ist es auch ein bekanntes Problem mit OneDrive. Mir wurde gesagt, dass 15.1 das behebt.
Ich habe einige Zeit darauf gewartet, dass unsere IT es einführt, aber mit Hunderten von Benutzern auf der ganzen Welt, die JMP verwenden, kann es sie ein wenig Zeit kosten.
Vielen Dank!,
DS
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-LabelsHi @SDF1 ,
Holen Sie sich lokalen Kontext wurde in 15.1 eingeführt. Kopieren funktioniert, können Sie den vollständigen Text abrufen und analysieren, obwohl mir klar ist, dass dies nicht ideal ist (weshalb ich hinzugefügt habe Holen Sie sich lokalen Kontext später).
Ich habe das Problem mit der Anmerkung gesehen, die auch nicht angezeigt wird. Glücklicherweise funktioniert es wie erwartet in 15.1.
Sehen Sie, ich habe Ihnen gerade zwei Gründe genannt, warum Sie Ihre JMP-Installation aktualisieren sollten! 
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-LabelsHi @nascif_jmp ,
(Win 10 Enterprise, 64-Bit, JMP Pro 15.0.0)
Ich dachte, das wäre eine wirklich tolle Frage, und ich habe versucht, ein paar andere Dinge zu tun, aber es hat nicht geklappt. Ich hatte versucht, das Skript auszuführen, ein Skript im Skriptfenster speichern und dann im Fenster des Skriptfensters nach den relevanten Informationen gesucht. Das gestaltete sich allerdings recht schwierig.
Trotzdem danke für deine 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, fügt 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 obige ausgeführt habe, versuche ich, die Zeile hlec = gpin << Get Local Context(); JMP gibt diesen Fehler im Protokoll aus: Objekt 'gpin' erkennt die Nachricht 'Get Local Context' nicht; vielleicht meinst du einen von diesen: <<<<<<<
Irgendwelche Ideen, warum einer von denen nicht richtig funktioniert?
Meine Version von JMP erkennt auch den Befehl „Lokalen Kontext abrufen“ nicht, wenn ich im Skriptindex danach suche. Vielleicht funktioniert deshalb Nr. 2 nicht?
Vielen Dank!,
DS
Betreff: Gibt es eine JSL-Nachricht für den Zugriff auf GraphBuilder BoxPlotSeg-LabelsHi, @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 auf jeden Fall prüfen.
Bitte sehen Sie sich das Skript unten an. Es zeigt, wie Sie den Inhalt der Anmerkung (in diesem Fall ein angeheftetes Hover-Label) sowohl als einzelnen Textabsatz (mithilfe von Kopieren ) und als Daten in Form eines assoziativen Arrays (mit Lokalen Kontext abrufen).Wie Sie sehen können, enthalten die Hover-Label-Kontextdaten mehr als nur die sichtbaren Hover-Label-Einträge und werden stark von Graphlet-Voreinstellungen verwendet. Ich glaube, Power-User werden 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"
)];