Hallo. Ich würde gerne wissen, ob es eine gute Möglichkeit gibt, die Anzahl der Frame-Boxen in einem Graphbuilder-Plot zu ermitteln. Ich habe ein GB-Diagramm, das 104 FB enthält (8 X-Gruppen, 13 Y-Gruppen). Ich habe ein Skript geschrieben, um die Markierungsgröße für jeden FB zu ändern.
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)}
)
)
);(Gutschrift an @Frau im https://community.jmp.com/t5/Discussions/Can-t-change-all-marker-size-in-Graph-Builder-by-script/mp/3928 ). In meinem Fall überschätzt die Summarize-Anweisung jedoch die Anzahl der FBs, da ich mehrere Zeilen in meiner Tabelle ausgeschlossen habe, die bestimmte Werte für Region, Image oder Freq enthalten. Dieses Skript funktioniert, aber sobald der Zähler i die tatsächliche Anzahl von FB im GB-Plot überschreitet, erhalte ich Fehlermeldungen im Protokoll ("FrameBox [" Graph Builder "] kann bei {}" nicht gefunden werden). Die Anweisung "Try" war ein Versuch, die Fehlermeldungen zu verhindern, funktionierte jedoch nicht. Auf jeden Fall würde ich es vorziehen, dies zu vermeiden, indem ich zunächst nur die richtige Anzahl von Frame-Boxen berechne. Hat jemand irgendwelche Ideen?
Um Ihre Frage direkt zu beantworten, können Sie die mit einer XPath-Abfrage zurückgegebenen Elemente zählen.Eine bessere Lösung besteht jedoch darin, die Nachricht "Marker Size" an alle mit XPath zurückgegebenen Ergebnisse zu senden, anstatt "Dispatch" zu verwenden.
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 );