Existe-t-il un message JSL pour accéder aux étiquettes GraphBuilder BoxPlotSeg
Les segments GraphBuilder BoxPlot dans JMP 14 et 15 semblent avoir une étiquette de survol intégrée.
De manière interactive, l'étiquette de survol peut être épinglée.
Vous trouverez ci-dessous une image d'une étiquette de survol épinglée et du script enregistré associé.
Je souhaite accéder aux clôtures BoxPlotSeg. Je n'ai pas trouvé de syntaxe JSL pour accéder aux valeurs de clôture. D'après le script enregistré d'une session interactive, il semble évident que ces valeurs de clôture sont inhérentes au GraphBuilder. Je sais comment trouver/calculer les valeurs de clôture pour un Outlier BoxPlot. Cependant, si JMP a exposé les valeurs via GraphBuilder ou une autre méthode, j'aimerais savoir comment accéder aux valeurs de clôture.

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} )
)
)
)
);
Merci!
ScriptRe : Existe-t-il un message JSL pour accéder aux étiquettes BoxPlotSeg de GraphBuilder@ian_jmp est correct, mon objectif est d'accéder aux clôtures sans le message épinglé.
Oui, << Get Quantiles m'aidera à calculer les valeurs de clôture, les valeurs de données max et min dans la plage de q50 +/- 1,5 * (q75-q25). Il n'est donc pas difficile à calculer. Je me demandais juste s'il y avait une méthode pour y accéder.
@SDF1 , je n'ai pas encore mis à niveau vers 15.1, et j'ai vu le comportement intermittent de la répartition fonctionner ou être ignoré. Cela fonctionnerait comme un script, alors ce ne serait pas le cas. J'ouvrirais une nouvelle session et ça marcherait.Je vais devoir passer à la version 15.1 pour vérifier si le même comportement persiste. Je suppose que le numéro d'identification qui semble étrange est le problème.
@nascif_jmp , merci pour la réponse <
Au cas où quelqu'un suivrait ce post, j'ai joint un script avec une méthode pour obtenir les clôtures de boxplot avec JSL (plusieurs méthodes pour obtenir des quantiles, 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]);
);
Il produit le tableau ci-dessous. Notez que la table de données Analgésiques, la colonne "douleur" a un format d'affichage de 2 décimales ; les valeurs de clôture sont les valeurs stockées dans les tables.

Re : Existe-t-il un message JSL pour accéder aux étiquettes BoxPlotSeg de GraphBuilder@gzmorgan0 a dit ' Je souhaite accéder aux clôtures BoxPlotSeg. Je ne connaissais pas 'GetLocalContext', mais il semble s'appuyer sur des annotations réellement présentes. Mais peut-être que 'GetMoments' et 'GetQuantiles', qui renvoient tous deux une matrice, pourraient aider.
Re : Existe-t-il un message JSL pour accéder aux étiquettes BoxPlotSeg de GraphBuilderSalut @nascif_jmp ,
Oui, je dois également passer à la version 15.1 pour d'autres raisons : la version actuelle ne reconnaîtra pas tous les fichiers des répertoires sur les lecteurs réseau partagés. Parfois, il voit 1, 2 ou 6 fichiers sur les centaines qui s'y trouvent. Apparemment, c'est aussi un problème connu avec OneDrive. On m'a dit que la 15.1 corrige cela.
J'attends depuis un certain temps que notre service informatique le déploie, mais avec des centaines d'utilisateurs à travers le monde qui utilisent JMP, j'imagine que cela peut leur prendre un peu de temps.
Merci!,
DS
Re : Existe-t-il un message JSL pour accéder aux étiquettes BoxPlotSeg de GraphBuilderSalut @SDF1 ,
Obtenir le contexte local a été introduit en 15.1. Copie fonctionne, vous pouvez obtenir le texte intégral et l'analyser, bien que je réalise que ce n'est pas idéal (c'est pourquoi j'ai ajouté Obtenir le contexte local plus tard).
J'ai vu le problème avec l'annotation ne s'affichant pas aussi bien. Heureusement, cela fonctionne comme prévu dans 15.1.
Vous voyez, je viens de vous donner deux raisons de mettre à niveau votre installation JMP ! 
Re : Existe-t-il un message JSL pour accéder aux étiquettes BoxPlotSeg de GraphBuilderSalut @nascif_jmp ,
(Win 10 Entreprise, 64 bits, JMP Pro 15.0.0)
J'ai pensé que c'était une très bonne question, et j'ai essayé de faire d'autres choses, mais ça n'a pas marché. J'avais essayé d'exécuter le script, de faire un Enregistrer le script dans la fenêtre de script, puis de rechercher les informations pertinentes dans la fenêtre de la fenêtre de script. Cela s'avérait assez difficile, cependant.
Quoi qu'il en soit, merci pour votre réponse. J'ai essayé d'exécuter le script que vous avez donné, et il se passe deux choses étranges :
- Lorsque j'essaie simplement d'exécuter le script tel quel, la section de code "Envoyer au rapport (expédition (...))" n'ajoute pas réellement l'annotation Pin au graphique. Je dois revenir manuellement et le faire.
- Après avoir effectué ce qui précède, lorsque j'essaie d'exécuter la ligne hlec = gpin << Get Local Context(); JMP donne cette erreur dans le journal : l'objet 'gpin' ne reconnaît pas le message 'Get Local Context' ; peut-être voulez-vous dire l'un d'entre eux : <<<<<<<
Des idées pourquoi l'un ou l'autre ne fonctionne pas correctement?
Ma version de JMP ne reconnaît pas non plus la commande Get Local Context lorsque je la recherche dans l'index de script, c'est peut-être pour cette raison que #2 ne fonctionnera pas ?
Merci!,
DS
Re : Existe-t-il un message JSL pour accéder aux étiquettes BoxPlotSeg de GraphBuilderBonjour à tous, @gzmorgan0 ,
Oui c'est possible. Certains de ces messages d'annotation ont été ajoutés très récemment pour aider avec nos cadres de test, je m'excuse s'ils n'ont pas été correctement documentés. Je vais m'assurer d'examiner cela.
Veuillez consulter le script ci-dessous. Il montre comment obtenir le contenu de l'annotation (qui dans ce cas est une étiquette de survol épinglée) sous la forme d'un seul paragraphe de texte (en utilisant Copie ) et sous forme de données sous la forme d'un tableau associatif (en utilisant Obtenir le contexte local).Comme vous pouvez le voir, les données de contexte d'étiquette de survol incluent plus que les entrées d'étiquette de survol visibles et sont fortement utilisées par les préréglages de Graphlet. Je pense que les utilisateurs expérimentés pourront en tirer parti pour créer des applications JMP interactives vraiment intéressantes. Pour plus d'informations sur le type de données disponibles, consultez :
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);
Résultats du journal :
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"
)];