Visualizzazione di un grafico durante l'esecuzione di uno scriptCiao. Ho creato uno script per il mio tavolo che spero di fare clic con il tasto destro del mouse su "Esegui script" per eseguire il mio script e visualizzare alcuni grafici. Tuttavia, quando eseguo il mio codice principale, i grafici vengono visualizzati automaticamente e quando faccio clic con il pulsante destro del mouse su "Esegui script" non fa nulla. Avrei bisogno del tuo aiuto per segnalare l'errore sul mio codice. Grazie.
Di seguito è una sezione del codice lungo.
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
)
)
)
)
)
);Ri: Visualizzazione di un grafico quando si esegue uno scriptIl problema è uno dei Namespace. Lo script che è stato incorporato nella tabella di dati memorizza e ottiene le variabili di memoria in una posizione di memoria diversa (spazio dei nomi) rispetto allo script eseguito dalla finestra di script. Tuttavia, è possibile creare uno spazio dei nomi globale che entrambi gli script possono utilizzare.
Quindi se hai il codice nel tuo script incorporato per impostare la dimensione che punta allo spazio di memoria globale ... diciamo che chiamiamo quello spazio "gspace", il codice nel tuo script incorporato sarebbe
size(gspace:xSize,gspace:ySize),
e tu correresti nella tua finestra di script aperta
gspace = new namespace("GSpace");
gspace:xSize = 800;
gspace:ySize = 600;
Quindi, quando esegui il codice incorporato, troverà le variabili gSpace
Ri: Visualizzazione di un grafico quando si esegue uno script @txnelson ,
Grazie ha funzionato. Tuttavia ho una domanda di follow-up ... le variabili sul mio script: xSize, ySize, aColumns e bColumns contengono valori al di fuori del nuovo script. Tuttavia, quando viene eseguito il nuovo script, i valori non vengono passati all'interno dell'espressione. Ho sempre avuto difficoltà con Eval ed Expr. Puoi aiutarmi anche a indicare come risolvere questo problema?
Ri: Visualizzazione di un grafico quando si esegue uno scriptIl codice di scansione e di bgraph deve essere parte della sceneggiatura. Sotto c'è una versione che genera uno script che eseguirà ciò di cui hai bisogno.
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
)
)
)
)
);
);