Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Si vous connaissez l'ordre exact des boîtes de contour, vous pouvez utiliser les éléments suivants
prf = Current Report()["Fit Group",OutlineBox(3)]<<SET title=""></SET>
ou
prf = Current Report()["Fit Group","Response A","Prediction Profiler"]<<SET title=""></SET>
Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Votre suggestion fonctionnerait si je voulais approfondir le profileur de réponse individuel, car je sais qu'il n'y en a qu'un sous chaque boîte de contour de réponse. Ensuite, je pourrais inclure dans la référence le chemin exact jusqu'à la zone de contour qui m'intéresse.
Cependant, je souhaite spécifiquement accéder au profileur "groupe", qui se trouve être le plus élevé du point de vue hiérarchique, c'est-à-dire directement sous la zone de contour "Fit Group" et non un niveau inférieur, sous la zone de contour de réponse individuelle.
Le problème est que je ne connais pas l'ordre exact, c'est toujours différent.Non seulement le nombre de boîtes de contour de réponse, mais également la présence de profileurs de réponse individuels et/ou d'autres boîtes de contour à l'intérieur de celles-ci peuvent varier, je ne peux donc pas y faire référence par numéro. Malheureusement, il semble que la syntaxe de référence ne considère pas la hiérarchie mais uniquement l'ordre d'apparition global.
Et bien que mon profileur d'intérêt soit aussi le dernier par ordre d'apparition, cela ne m'aide pas beaucoup non plus puisque je ne connais pas leur numéro sans les parcourir en boucle, ce que je fais déjà.
Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Xpath ou l'indexation devrait fonctionner
Names Default To Here(1);
nw = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
wait(1);
obs = nw[OutlineBox("Fit Group")] << XPath("//OutlineBox");
Right(obs, 1) << Set Title("This");
wait(1);
nw = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
wait(1);
nw["Fit Group",OutlineBox(8)] << Set Title("That");Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Vous pouvez utiliser XPath() pour obtenir tout Boîtes de contour -- vous pouvez ensuite filtrer cela pour délimiter les cases qui ont le titre « Profileur de prédiction » si tu veux.Ensuite, vous pouvez demander à chacun ContourBox quel est son parent, et faites-le correspondre au niveau supérieur ContourBox "Groupe en forme" .Cela tirera le premier ContourBox avec titre « Profileur de prédiction » qui est un enfant direct du OutlineBox( "Ajuster le groupe" ) .
win = New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);
olb = win[Outline Box( "Fit Group" )]; // top-level OLB of interest
olbs = olb << XPath( "//OutlineBox" ); // ALL child OLBs, regardless of hierarchy
titles = olbs << Get Title; // Get the titles of each OLB
profilers = Loc( titles, "Prediction Profiler" ); // Find the OLB locations in the list with title "Prediction Profiler"
profiler olbs = olbs[profilers]; // Get the list of OLBs with title "Prediction Profiler"
direct child profiler loc = Contains( profiler olbs << Parent, olb ); // Location of OLBs that have the "Fit Group" OLB as the direct parent
profiler = profiler olbs[direct child profiler loc]; // First of the above list
Wait( 2 );
profiler << Set Title( "Gotcha!!" ) // change name to show that the correct OLB is referenced
Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Vous pouvez utiliser le langage XPath pour obtenir des objets spécifiques dans l'arborescence XML.
Names Default to Here( 1 );
// set up example
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Fit Group(
Fit Model(
Y( :height ),
Effects( :age, :sex ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
),
:height << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
),
Fit Model(
Y( :weight ),
Effects( :age, :sex ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
),
:weight << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Scaled Estimates( 0 ),
Plot Actual by Predicted( 0 ), Plot Regression( 0 ),
Plot Residual by Predicted( 0 ), Plot Studentized Residuals( 0 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 0 )}
)
),
<<{Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
age( 12, Lock( 0 ), Show( 1 ) ),
sex( "F", Lock( 0 ), Show( 1 ) )
)
)}
);
// start to change title
rpt = obj << Report;
profiler = rpt << XPath( "//OutlineBox[text()='Prediction Profiler']" );
last = N Items( profiler );
profiler[last] << Set Title( "I'm here!" );Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Merci à tous!
Certainement mieux que de boucler.
Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Merci à tous!
Certainement mieux que de boucler.
Re : Comment référencer des boîtes de contour avec le même nom, compte tenu de leur hiérarchie ?Voici une traduction assez littérale de l'algorithme de recherche original en xpath qui fonctionne avec l'exemple de Mark
pp =(rpt << xpath("//OutlineBox[text()='Prediction Profiler'][count(./ancestor::OutlineBox[contains(text(),'Response')])=0]"));
pp << Set Title("I'm here");
Il recherche à partir du haut de l'arborescence d'affichage un OutlineBox avec un titre de "Predicted Profiler" qui a également 0 OutlineBox au-dessus dont les titres incluent le mot "Response".Il convient également de souligner que dans Jmp 17, il existe un nouveau contrôle dans le panneau des propriétés qui vous donnera l'indice de fenêtre ou l'extrait de code xpath vers n'importe quelle zone d'affichage.L'extrait qu'il vous donne ne sera pas aussi flexible que certaines des solutions publiées ici, mais ce sera un bon point de départ

Comment référencer des boîtes de contour du même nom, compte tenu de leur hiérarchie ?Salut,
J'ai lu la documentation et RTFF-ed mais je n'ai pas trouvé de solution à ce que je pense être un problème assez trivial. Ou peut-être que je l'ai complètement raté et que c'est quelque chose de complètement évident.
Disons que j'ai un rapport de la structure arborescente suivante de boîtes de contour (en réalité, par exemple, un rapport Fit Least Squares avec des réponses multiples avec une structure plus complexe avec des couches supplémentaires, mais cet exemple créé manuellement montre le problème de la même manière):
New Window("Report",
Outline Box("Fit Group",
Outline Box( "Response A",
Outline Box("Prediction Profiler")
),
Outline Box( "Response B",
Outline Box("Prediction Profiler")
),
Outline Box( "Response C",
Outline Box("Prediction Profiler")
),
Outline Box( "Prediction Profiler" )
)
);Je souhaite accéder au "groupe" "Prediction Profiler" (le dernier).
Cependant, la référence ci-dessous renvoie le premier (Prediction Profiler of Response A), je suppose parce que c'est le premier puisqu'ils sont numérotés par ordre d'apparition sans tenir compte du niveau de hiérarchie.
prf = Current Report()[Outline Box("Fit Group")][Outline Box("Prediction Profiler")];
Show( (prf << parent) << get title ) // check the parent - confirmation that it returns the "Response A" profiler Ma solution actuelle consiste à les parcourir tous et à vérifier leurs noms de parents. Celui dont le nom du parent ne commence pas par "Response" est le bon. J'ai l'impression que c'est beaucoup d'histoires pour une tâche très simple.
Existe-t-il un moyen de référencement plus élégant et direct ?
Merci
Exploration et visualisation des donnéesles fenêtres