Ottieni il numero di riquadri di frame in un grafico di graphbuilderCiao. Mi piacerebbe sapere se esiste un buon modo per ottenere il numero di riquadri di frame in un grafico del costruttore di grafici. Ho un grafico GB che contiene 104 FB (8 gruppi X, 13 gruppi Y). Ho scritto uno script per modificare la dimensione del marker per ogni 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)}
)
)
);(credito a @SM nel https://community.jmp.com/t5/Discussions/Can-t-change-all-marker-size-in-Graph-Builder-by-script/mp/3928 ). Ma nel mio caso, l'istruzione Summarize sovrastima il numero di FB, poiché ho escluso diverse righe nella mia tabella contenenti determinati valori di Region, Image o Freq. Questo script funziona, ma una volta che il contatore supera il numero effettivo di FB nel grafico GB, inizio a ricevere messaggi di errore nel registro ("Impossibile trovare FrameBox [" Graph Builder "] in {}"). L'istruzione "Try" era un tentativo di impedire i messaggi di errore, ma non ha funzionato. In ogni caso, preferirei evitarlo calcolando semplicemente il numero corretto di frame box per cominciare. Qualcuno ha qualche idea?
GraficaScriptingRi: Ottieni il numero di riquadri di frame in un grafico di graphbuilder?Per rispondere direttamente alla tua domanda, puoi contare gli elementi restituiti con una query XPath.Una soluzione migliore, tuttavia, è semplicemente inviare il messaggio Marker Size a tutti i risultati restituiti con XPath invece di utilizzare 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 );
Ri: Ottieni il numero di riquadri di frame in un grafico di GraphbuilderGrazie @ih . Sembra che abbia funzionato bene. Per qualche motivo ricevo un errore quando provo ad accettare la tua risposta come soluzione, ma questa era la soluzione.