Ich habe Diagramme gezeichnet und hätte gerne ein Tabellenskript, mit dem ich die Achsen entfernen und die x-Achsenwerte des Diagramms an den Diagrammtitel senden kann, bevor es als PPT gespeichert wird. Ich möchte die Achsen in den Diagrammen nicht ausblenden, bis ich die Gelegenheit hatte, sie manuell neu zu skalieren (zu viele Variationen in den Daten, um festgelegte Werte zu verwenden), damit ich sie später als eingefügte Diagramme für Präsentationen verwenden kann. Ist das machbar?
Hier sind die 2 Codeteile, die die Achsen entfernen, und dann der Code zum erneuten Anzeigen der Achsen
Names Default To Here( 1 );
obj = Current Report();
(obj << xpath( "//AxisBox" )) << visibility( "collapse" );
Names Default To Here( 1 );
obj = Current Report();
(obj << xpath( "//AxisBox" )) << visibility( "visible" );
Zusätzlich zu @txnelson Hier ist ein Beispiel, wie das funktionieren könnte.
Die Verwendung von XPath ist ein wenig knifflig, da es alle Elemente dieses Typs adressiert, Sie müssen nachsehen, welche speziell (oder alle) geändert/ausgewertet werden sollen.
Um die x-Werte (min max) zu erhalten, war meine beste Idee, das Skript auszuwerten. Eventuell gibt es noch eine andere Möglichkeit.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
obj = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
obj << bring window to front();
Wait( 1 );
// change the x-axis of the graph
obj << SendToReport( Dispatch( {}, "height", ScaleBox, {Min( 60.50 ), Max( 65 ), Inc( 2 ), Minor Ticks( 0 )} ) );
Wait( 3 );
// get title of x-axis and show result in log
x_axis_text = (obj << xpath( "//TextEditBox" ))[3] << get text();
Show( x_axis_text );
// collapse x-axis
(obj << xpath( "//AxisBox" ))[1] << visibility( "collapse" );
// get script of Graph Builder to evaluate min and max values
script = obj << get script();
min_txt = Regex( Char( Name Expr( script ) ), "Min\([0-9]+[.]*[0-9]*\)" );
max_txt = Regex( Char( Name Expr( script ) ), "Max\([0-9]+[.]*[0-9]*\)" );
Show( min_txt, Type( max_txt ) );
// set graph title accordingly
(obj << xpath( "//TextEditBox" ))[1] << set text( x_axis_text || " from " || min_txt || " to " || max_txt );