Obtenir le nombre de cadres dans un tracé de graphbuilder?Salut. Je voudrais savoir s'il existe un bon moyen d'obtenir le nombre de cadres dans un tracé de graphbuilder. J'ai une parcelle de Go 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 à @SP 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 ma table 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 ("Cannot find FrameBox [" Graph Builder "] at {}"). L'instruction «Try» était une tentative pour empêcher les messages d'erreur, mais n'a pas fonctionné. En tout cas, je préférerais éviter cela en calculant simplement le nombre correct de boîtes d'image pour commencer. Quelqu'un a des idées?
GraphiqueScriptingRe: Obtenir le nombre de cadres 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, est d'envoyer simplement 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 );
Re: Obtenir le nombre de cadres 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.