스크립트 실행시 그래프 표시안녕하세요. "Run Script"를 마우스 오른쪽 버튼으로 클릭하면 스크립트가 실행되고 그래프가 표시되기를 바라고있는 테이블 용 스크립트를 만들었습니다. 그러나 주 코드를 실행하면 그래프가 자동으로 표시되고 이후에 "스크립트 실행"을 마우스 오른쪽 단추로 클릭하면 아무 것도 실행되지 않습니다. 내 코드에서 오류를 지적하는 데 도움이 필요합니다. 감사.
아래는 긴 코드의 섹션입니다.
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
)
)
)
)
)
);스크립트를 실행할 때 그래프 표시문제는 네임 스페이스 중 하나입니다. 데이터 테이블에 임베드 된 스크립트는 스크립트 윈도우에서 실행되는 스크립트와 다른 메모리 위치 (네임 스페이스)에 메모리 변수를 저장하고 가져옵니다. 그러나 두 스크립트에서 모두 사용할 수있는 전역 네임 스페이스를 만들 수 있습니다.
따라서 전역 메모리 공간을 가리키는 크기를 설정하기 위해 임베디드 스크립트에 코드가 있다면 ... 그 공간을 "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
)
)
)
)
);
);