Obtenir le nombre de boîtes de cadre dans un tracé graphbuilder ?Salut. J'aimerais savoir s'il existe un bon moyen d'obtenir le nombre de cadres dans un tracé de graphbuilder. J'ai un tracé GB qui contient 104 FB (8 groupes X, 13 groupes Y). J'ai écrit un script pour changer la taille du marqueur pour chaque FB.
Summarize(dtstack, frame_lis = By(:Freq, :Image, :Region));
For(i=1, i<=NItems(frame_lis[1]), i++,
Try(
Report(gb) << Dispatch({}, "Graph Builder", FrameBox(i),
{Marker Size(1)}
)
)
);(crédit à @Mme dans https://community.jmp.com/t5/Discussions/Can-t-change-all-marker-size-in-Graph-Builder-by-script/mp/3928 ). Mais dans mon cas, l'instruction Summarize surestime le nombre de FB, car j'ai exclu plusieurs lignes de mon tableau contenant certaines valeurs de Region, Image ou Freq. Ce script fonctionne, mais une fois que le compteur i dépasse le nombre réel de FB dans le tracé GB, je commence à recevoir des messages d'erreur dans le journal ("Impossible de trouver FrameBox[ "Graph Builder" ] à {}"). L'instruction "Try" était une tentative d'empêcher les messages d'erreur, mais n'a pas fonctionné. Quoi qu'il en soit, je préférerais éviter cela en calculant simplement le nombre correct de boîtes de cadre pour commencer. Quelqu'un a des idées?
GraphiqueScriptRe : Obtenir le nombre de boîtes de cadre dans un tracé de graphbuilder ?Merci @ih . Cela semble avoir bien fonctionné. Pour une raison quelconque, j'obtiens une erreur lorsque j'essaie d'accepter votre réponse comme solution - mais c'était la solution.Re : Obtenir le nombre de boîtes de cadre dans un tracé de graphbuilder ?Pour répondre directement à votre question, vous pouvez compter les éléments renvoyés avec une requête XPath.Une meilleure solution, cependant, consiste à simplement envoyer le message Marker Size à tous les résultats renvoyés avec XPath plutôt que d'utiliser Dispatch.
Names Default To Here( 1 );
dt = Open( "$sample_data\Big Class.jmp" );
gb = Graph Builder(
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Group Y( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ) ),
);
//Count Frame boxes here
N Items( (gb << XPath( "//FrameBox" )) );
//Or just update them all
(gb << XPath( "//FrameBox" )) << Marker Size( 8 );