Visualización de un gráfico al ejecutar un scriptHola. Creé una secuencia de comandos para mi tabla que espero que cuando haga clic con el botón derecho en "Ejecutar secuencia de comandos", se ejecute mi secuencia de comandos y se muestren algunos gráficos. Sin embargo, cuando ejecuto mi código principal, los gráficos se muestran automáticamente y cuando hago clic con el botón derecho en "Ejecutar script", no hace nada. Necesitaría su ayuda para señalar el error en mi código. Gracias.
A continuación se muestra una sección del código largo.
aGraph = Graph Builder(
Size( xSize, ySize ),
Show Control Panel( 0 ),
Variables( X( :V ), Y( :I ), Overlay( :PID ) ),
Elements( Points( X, Y, Legend( 4 ), Jitter( 1 ) ), Line( X, Y, Legend( 6 ), Row order( 0 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch( {}, "ID", ScaleBox, {Scale( "Log" ), Format( "Best", 12 ), Inc( 1 ), Minor Ticks( 1 )} ),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 1 ), Line Width Scale( 0.1 )} )
)
);
bGraph = Graph Builder(
Size( xSize, ySize ),
Show Control Panel( 0 ),
Variables( X( :V ), Y( :I ), Overlay( :PID ) ),
Elements( Points( X, Y, Legend( 3 ), Jitter( 1 ) ), Line( X, Y, Legend( 5 ), Row order( 0 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch( {}, "IG", ScaleBox, {Scale( "Linear" ), Format( "Best", 12 ), Inc( 1 ), Minor Ticks( 1 )} ),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 1 ), Line Width Scale( 0.1 )} )
)
);
// Create new script
dt << New Script(
"Plot Graph",
graphWindow = New Window( "Graphs",
Panel Box( "Graphs",
V List Box(
H List Box(
If( !Is Empty( aColumns ),
aGraph
),
If( !Is Empty( bColumns ),
bGraph
)
)
)
)
)
);Re: Mostrar un gráfico cuando se ejecuta un scriptEl problema es uno de espacio de nombres. El script que se ha incrustado en la tabla de datos almacena y obtiene las variables de memoria en una ubicación de memoria diferente (espacio de nombres) que el script ejecutado desde la ventana de su script. Sin embargo, puede crear un espacio de nombres global que ambos scripts puedan usar.
Entonces, si tiene el código en su secuencia de comandos incrustada para establecer el tamaño que apunta al espacio de memoria global ... digamos que llamamos a ese espacio "gspace", el código en su secuencia de comandos incrustada sería
size(gspace:xSize,gspace:ySize),
y correrías en tu ventana de script abierto
gspace = new namespace("GSpace");
gspace:xSize = 800;
gspace:ySize = 600;
Luego, cuando ejecute el código incrustado, encontrará las variables gSpace
Re: Mostrar un gráfico cuando se ejecuta un script @txnelson ,
Gracias funcionó. Sin embargo tengo una pregunta de seguimiento ... Las variables en mi script: xSize, ySize, aColumns y bColumns mantienen los valores fuera del nuevo script. Sin embargo, cuando se ejecuta el nuevo script, los valores no se pasan dentro de la expresión. Siempre tengo problemas con Eval y Expr. ¿Puedes también ayudarme a señalar cómo solucionar esto?
Re: Mostrar un gráfico cuando se ejecuta un scriptEl código agraph y bgraph deben formar parte del script. A continuación se muestra una versión que genera un script que ejecutará lo que necesita.
Names Default To Here( 1 );
dt = Current Data Table();
// Create new script
dt << New Script(
"Plot Graph",
aGraph = Expr(
Graph Builder(
Size( xSize, ySize ),
Show Control Panel( 0 ),
Variables( X( :V ), Y( :I ), Overlay( :PID ) ),
Elements(
Points( X, Y, Legend( 4 ), Jitter( 1 ) ),
Line( X, Y, Legend( 6 ), Row order( 0 ), Summary Statistic( "Mean" ) )
),
SendToReport(
Dispatch(
{},
"ID",
ScaleBox,
{Scale( "Log" ), Format( "Best", 12 ), Inc( 1 ), Minor Ticks( 1 )}
),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 1 ), Line Width Scale( 0.1 )} )
)
)
);
bGraph = Expr(
Graph Builder(
Size( xSize, ySize ),
Show Control Panel( 0 ),
Variables( X( :V ), Y( :I ), Overlay( :PID ) ),
Elements(
Points( X, Y, Legend( 3 ), Jitter( 1 ) ),
Line( X, Y, Legend( 5 ), Row order( 0 ), Summary Statistic( "Mean" ) )
),
SendToReport(
Dispatch(
{},
"IG",
ScaleBox,
{Scale( "Linear" ), Format( "Best", 12 ), Inc( 1 ), Minor Ticks( 1 )}
),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 1 ), Line Width Scale( 0.1 )} )
)
)
);
graphWindow = New Window( "Graphs",
Panel Box( "Graphs",
V List Box(
H List Box(
If( !Is Empty( aColumns ),
aGraph
),
If( !Is Empty( bColumns ),
bGraph
)
)
)
)
);
);