JSL 스크립트: 데이터 테이블의 모든 열을 플롯하는 그래프 빌더안녕하세요 여러분,
오랫동안 JMP를 사용해 온 사용자(jsl 스크립팅 초보자), 처음으로 포스터를 사용합니다. 도움을 주시면 감사하겠습니다!
저는 다음 두 가지 작업을 수행하는 스크립트를 작성하고 있습니다.
1. 텍스트 파일을 열고 숫자 데이터를 가져온 다음 나중에 열 수 있도록 데이터 테이블을 저장합니다.
2. 그래프 빌더를 사용하여 모든 "y축" 열을 한 번에 표시합니다.
항목 #1에는 문제가 없으므로 이에 대한 설명은 필요하지 않습니다. 항목 #2가 문제를 일으키고 있습니다. 하나의 그래프에 모든 y축 열을 한 번에 표시하는 방법을 찾지 못했습니다.
데이터 테이블에는 하나의 x축 데이터 열(결과 그래프의 x축에 사용되는 데이터)이 있지만 그래프의 동일한 y축에 있어야 하는 데이터 열이 1개 이상 있을 수 있습니다. 저는 이 데이터들을 시각적으로 비교하려고 하는데, 하나의 그래프를 모두 플롯하여 사용하는 것이 매우 유용합니다. 오버레이에 사용되는 세 번째 열을 사용하여 데이터를 하나의 x 및 하나의 y 데이터 세트에 쌓을 수도 있지만 그렇게 하고 싶지는 않습니다.
어떤 아이디어가 있나요?
Re: JSL 스크립트: 데이터 테이블의 모든 열을 플롯하는 그래프 빌더고마워요 짐,
이것은 완벽하게 작동했습니다. 그리고 설명서를 읽어보라고 부드럽게 권유해 주셔서 감사합니다. 다시 한 번 읽어보고 설명서의 몇 퍼센트를 더 기억할 수 있기를 바랍니다. 하지만 나는 항상 매뉴얼에서 배우지는 않기 때문에 여기에 왔습니다. 솔직히 말해서 당신이 무엇을 했는지 파악하는 데 약 5시간이 걸렸을 것입니다. 귀중한 시간을 절약하고 앞으로 사용할 수 있는 새로운 것을 보여 준 전문가의 접근 방식에 감사드립니다. 건배
Re: JSL 스크립트: 데이터 테이블의 모든 열을 플롯하는 그래프 빌더- 스크립팅 가이드를 읽어야 합니다.
- 나는 그래프를 생성하기 위해 JSL이 어떤 모습이어야 하는지 또는 적어도 원하는 그래프에 대한 나의 해석을 보여주는 스크립트를 제공했습니다.
- 대화식으로 실행하는 것에 대한 제가 제안하는 것은 원하는 방식으로 그래프를 생성할 수 있는 방법을 제공하는 것입니다. 그런 다음 JMP에서 그래프에 대한 스크립트를 생성하도록 하여 무엇이 필요한지 보여주기만 하면 됩니다. 그래프를 생성하기 위해 생성됩니다.
- 반도체 성능 데이터 테이블을 가져온 다음 모든 연속 열을 사용하여 오버레이된 차트를 생성하는 스크립트를 첨부했습니다.첫 번째 연속 열은 X 열로 사용되고 나머지는 다중 Y 열로 사용됩니다.
- 스크립트에 사용된 모든 기능은 스크립팅 색인에 문서화되어 있습니다.그러나 다양한 도구와 구조를 배우면 독립적으로 작성된 스크립트를 만들 수 있습니다.
- JSL 내의 일부 구성 요소를 이해하는 데 어려움이 있을 때 커뮤니티 토론 그룹이 도움을 드립니다.
- 입력 동적 데이터 테이블에서 분석, 차트 등을 작성하는 예는 커뮤니티 사이트의 토론 전체에서 확인할 수 있습니다.해결책을 찾기 위해 이미 게시된 토론을 살펴봐야 합니다.
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );Re: JSL 스크립트: 데이터 테이블의 모든 열을 플롯하는 그래프 빌더안녕하세요 짐,
적시에 응답해 주셔서 감사합니다! 귀하의 게시물은 제가 스크립트에서 수행하기를 원하는 작업을 정확하게 설명합니다. 아니요, 저는 이 작업을 대화식으로 수행하지 않습니다. 스크립트를 사용하여 그래프를 생성해야 하므로 스크립트를 실행할 때 다음과 같습니다.
1. 텍스트 파일을 열고 모든 데이터를 데이터 테이블에 로드하고 데이터 테이블을 저장합니다(이미 문제 없이 스크립트의 이 부분을 완료했습니다).
2. 모든 y-데이터 열과 하나의 x-데이터 열에 대한 단일 플롯을 생성합니다. (이것이 도움이 필요한 것입니다.)
데이터 파일에는 여러 이름의 y 데이터 열이 있을 수 있지만 x 데이터 열은 항상 하나만 있습니다. 내가 이미 작성한 로더 스크립트는 모든 데이터를 로드하고 열 이름을 지정합니다.파일이 데이터 테이블에 로드될 때까지 얼마나 많은 y-데이터 열이 있는지 미리 알 수 없습니다.
처음에 생각한 것은 그래프 빌더의 "Y" 변수에 열 목록을 보내는 것이었지만 그것이 가능한지는 확실하지 않습니다. 다른 제안도 가능하지만 하나의 x 데이터 열과 많은 y 데이터 열이 있는 데이터 테이블 구조를 유지하고 싶습니다(즉, 데이터를 쌓고 싶지 않음).
-데이브
Re: JSL 스크립트: 데이터 테이블의 모든 열을 플롯하는 그래프 빌더그래프 빌더를 대화형으로 실행하는 경우 여러 열을 Y축으로 표시하기 위해 해야 할 일은 그래프로 표시하려는 모든 열을 잡고 Y 드롭 영역으로 드래그하는 것뿐입니다.

이를 수행하는 JSL은 다음과 같습니다.
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);