スクリプト実行時のグラフ表示こんにちは。テーブル用のスクリプトを作成しました。これは、[スクリプトの実行]を右クリックするとスクリプトが実行され、いくつかのグラフが表示されることを期待しています。ただし、メインコードを実行するとグラフが自動的に表示され、その後[スクリプトの実行]を右クリックしても何も起こりません。私のコードでエラーを指摘していただければと思います。ありがとう。
以下は長いコードの一部です。
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
)
)
)
)
)
);スクリプト実行時のグラフ表示問題はネームスペースの1つです。 データテーブルに埋め込まれたスクリプトは、スクリプトウィンドウから実行されたスクリプトとは異なるメモリ位置(名前空間)にメモリ変数を格納して取得します。 ただし、両方のスクリプトが使用できるグローバル名前空間を作成できます。
したがって、グローバルメモリ空間を指すサイズを設定するための埋め込みスクリプト内のコードがある場合、そのスペースを "gspace"と呼ぶことにします。埋め込みスクリプト内のコードは次のようになります。
size(gspace:xSize,gspace:ySize),
そしてあなたはあなたの開いているスクリプトウィンドウで走るでしょう
gspace = new namespace("GSpace");
gspace:xSize = 800;
gspace:ySize = 600;
埋め込みコードを実行すると、gSpace変数が見つかります。
スクリプト実行時のグラフ表示 @txnelson 、
ありがとうございました。しかし、私はフォローアップの質問があります... 私のスクリプトの変数xSize、ySize、aColumns、およびbColumnsは、新しいスクリプトの外側の値を保持します。ただし、新しいスクリプトが実行されると、値は式の中に渡されません。私はいつもEvalとExprに苦労しています。これを修正する方法を私が指摘するのを手伝ってもらえますか?
スクリプト実行時のグラフ表示agraphとbgraphのコードはスクリプトの一部である必要があります。 以下はあなたが必要とするものを実行するスクリプトを生成するバージョンです。
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
)
)
)
)
);
);