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 le 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 à GraphBuilder. Je sais comment trouver/calculer les valeurs de clôture pour un BoxPlot aberrant. 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!
Mélange et nettoyage des donnéesPersonnalisation de masseRe : Existe-t-il un message JSL pour accéder aux étiquettes GraphBuilder BoxPlotSeg@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 maximales et minimales dans la plage q50 +/- 1,5*(q75-q25). Ce n’est donc pas difficile à calculer. Je me demandais simplement s'il existait 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 cela fonctionnerait.Je vais devoir passer à la version 15.1 pour vérifier si le même comportement persiste. Je suppose que c'est le numéro d'identification, qui semble étrange, qui 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 le tableau 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 GraphBuilder BoxPlotSeg@gzmorgan0 dit ' Je souhaite accéder aux clôtures BoxPlotSeg. Je ne connaissais pas « GetLocalContext », mais cela semble reposer sur la présence réelle d'annotations. 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 GraphBuilder BoxPlotSegSalut @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 réellement. Apparemment, c'est également un problème connu avec OneDrive. On m'a dit que la version 15.1 corrige ce problème.
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 pourrait leur prendre un peu de temps.
Merci!,
DS
Re : Existe-t-il un message JSL pour accéder aux étiquettes GraphBuilder BoxPlotSegSalut @SDF1 ,
Obtenir le contexte local a été introduit en 15.1. Copie fonctionne, vous pouvez obtenir le texte intégral et l'analyser, même si je me rends compte 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 qui ne s'affichait pas également. Heureusement, cela fonctionne comme prévu dans la version 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 GraphBuilder BoxPlotSegSalut @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 cela n'a pas fonctionné. J'avais essayé d'exécuter le script, d'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. Mais cela s’avérait assez difficile.
Quoi qu'il en soit, merci pour votre réponse. J'ai essayé d'exécuter le script que vous avez donné, et deux choses étranges se produisent :
- Lorsque j'essaie simplement d'exécuter le script tel quel, la section de code « Envoyer au rapport (Dispatch (...)) » n'ajoute pas réellement l'annotation Pin au graphique. Je dois y retourner 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 de ceux-ci : << Remplacer le texte... <<<<<<
Avez-vous une idée de la raison pour laquelle l'un ou l'autre ne fonctionne pas correctement ?
Ma version de JMP ne reconnaît pas non plus la commande Obtenir le contexte local lorsque je la recherche dans l'index de script, c'est peut-être pour cela que la commande n°2 ne fonctionnera pas ?
Merci!,
DS
Re : Existe-t-il un message JSL pour accéder aux étiquettes GraphBuilder BoxPlotSegSalut, @gzmorgan0 ,
Oui c'est possible. Certains de ces messages d'annotation ont été ajoutés très récemment pour nous aider dans nos frameworks de tests, je m'excuse s'ils n'ont pas été correctement documentés. Je veillerai à 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 forme de tableau associatif (en utilisant Obtenir le contexte local).Comme vous pouvez le constater, les données contextuelles de l'étiquette de survol incluent plus que les entrées visibles de l'étiquette de survol et sont largement utilisées par les préréglages Graphlet. Je pense que les utilisateurs expérimentés pourront en profiter 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"
)];