Tengo gráficos trazados y me gustaría tener un script de tabla que pueda usar para eliminar los ejes y enviar los valores del eje x del gráfico al título del gráfico antes de guardarlo como PPT. No quiero ocultar los ejes en los gráficos hasta después de haber tenido la oportunidad de volver a escalarlos manualmente (demasiada variación en los datos para usar valores establecidos), para poder usarlos más tarde como gráficos insertados para presentaciones. ¿Es esto factible?
Aquí están las 2 piezas de código que eliminarán los ejes y luego el código para volver a mostrar los ejes
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" );
Además de @txnelson Aquí hay un ejemplo de cómo podría funcionar esto.
El uso de XPath es un poco complicado, ya que abordará todos los elementos de ese tipo, debe buscar específicamente (o todos) para cambiar/evaluar.
Para obtener los valores de x (mín. máx.), mi mejor idea fue evaluar el script. Puede ser que haya otra opción.
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 );