그래프 빌더에서 열 이름 범주를 사용하여 열을 PAGE로 구분할 수 있습니까?아래 스크립트는 그래프 빌더에서 열 이름이 P로 시작하는 몇 개의 열(Y축에 여러 매개변수)을 표시합니다. 다음 페이지에서 N으로 시작하는 열 이름을 가진 몇 가지 다른 열을 동시에 플롯하고 싶습니다(아래 스크립트에 주석이 달린 명령).
다음 페이지에서는 V 등으로 시작하는 열 이름을 가진 몇 가지 다른 열을 플롯하고 싶습니다.
열 범주 정보는 별도의 데이터 테이블이나 다른 형식(아마도 목록)으로 미리 정의되어 있을 수 있습니다. 문제는 이것이 JSL을 통해 가능한지 여부이며, 그렇다면 어떻게 가능합니까?
Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
Graph Builder(Size( 1469, 718 ),
Variables(X( :lot_id ), Y( :PLG2 ), Y( :PNP4 ), Y( :PNP3 ), Y( :PNP2 ), Y( :PNP1 )),
//Page(:ColumCategory)
Elements( Position( 1, 1 ), Box Plot( X, Y, Legend( 14 ) ) ),
Elements( Position( 1, 2 ), Box Plot( X, Y, Legend( 12 ) ) ),
Elements( Position( 1, 3 ), Box Plot( X, Y, Legend( 11 ) ) ),
Elements( Position( 1, 4 ), Box Plot( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 5 ), Box Plot( X, Y, Legend( 10 ) ) ),
);
자동화 및 스크립팅윈도우Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?페이지는 행 단위 그룹화에 사용되므로 원하는 작업에 사용할 수 없습니다. 예를 들어 각 그룹당 열 목록이 있는 다음 V 목록 상자를 사용하여 별도의 그래프 빌더를 새 창에 추가하면서 해당 목록을 반복할 수 있습니다.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?데이터 테이블을 다시 포맷해도 도움이 되지 않습니다. 개별 Y 그룹에는 모든 항목이 표시됩니다.

열 하위 그룹을 분할하는 것이라면 데이터 필터 대신에 페이지 :

Names Default To Here (1);
clear log ();
dt = open( "$SAMPLE_DATA\semiconductor capability.jmp" );
dt << Ungroup Columns();
dtstacked = dt << Stack(
columns(
:NPN1, :PNP1, :PNP2, :NPN2, :PNP3, :IVP1, :PNP4, :NPN3, :IVP2, :NPN4, :SIT1,
:INM1, :INM2, :VPM1, :VPM2, :VPM3
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
"Non-stacked columns"n( Keep( :lot_id, :wafer, :Wafer ID in lot ID, :SITE ) )
);
dtstacked << new column("first_Label", Formula( Left( :Label, 1 ) ));
dtstacked << Graph Builder(
Size( 571, 449 ),
Show Control Panel( 0 ),
Fit to Window,
Variables(
X( :lot_id ),
Y( :Data ),
Page( :first_Label ),
Group Y( :Label ),
Color( :Label )
),
Elements( Box Plot( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :first_Label ),
Where( :first_Label == "N" ),
Display( :first_Label, N Items( 5 ) )
)
)
)Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@호기 @jthi 좋아요. 감사해요. 또 다른 아이디어는 저널 창에 표시된 열 집합이 있는 첫 번째 그래프 빌더 창을 배치/전송하고, 첫 번째 아래에 다음 새 열 집합을 그린 다음 열려 있는 그래프 창과 관련 데이터 테이블을 닫는 것입니다. JSL을 통해 이를 수행하는 방법은 무엇입니까?
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?관심 있는 열이 포함된 목록 목록을 생성하고 그래프 빌더를 구축하고 이를 저널/v 목록 상자에 추가하는 동안 이를 반복합니다. 모든 열의 크기가 동일합니까, 아니면 Y축의 양이 변경됩니까?
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?여기에 하나의 옵션이 있지만 이것이 사용할 수 있는 유일한 옵션은 아닙니다.
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);
nw << journal;
nw << Close Window;
my_j = Current Journal();
Write();Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?각 사례/그룹에 대해 서로 다른 열이 있는 경우 각 변경 사항에 대해 "my_group" 값을 변경하려면 JSL을 추가해야 합니다.
현재 For Each({my_group) 외부에 추가 For Each()를 추가하여 이를 수행할 수 있습니다. 여기서 현재 For Each()로 다시 들어가기 전에 my_group의 값을 변경합니다.
시도해 보시고 더 많은 문제가 발생하면 더 많은 질문이 있으면 커뮤니티에 다시 오시기 바랍니다.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@jthi y축에 표시된 열 수는 사례/그룹마다 다릅니다.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@jthi @txnelson 감사해요.
플롯할 매개변수는 다음 표와 같이 그룹화됩니다. 목표는 저널에서 각 그룹을 다른 그룹 아래에 추가하는 것입니다. 그리고 그룹 항목을 각각의 차트 제목으로 하고 싶습니다.이 경우 위의 JSL을 수정하는 방법은 무엇입니까?

Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?귀하의 경우에는 키가 그룹 이름이고 값이 매개변수(열) 목록인 연관 배열을 사용합니다. 그런 다음 저널을 작성하는 동안 For Each를 사용하여 이 연관 배열을 반복합니다.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@txnelson @호기 . 귀하의 제안에 감사드립니다. 나는 잠시 휴식을 취한 후 이 주제로 돌아왔습니다.
@jthi JMP 16.2에서 스크립트의 이 부분을 실행합니다.
Names Default To Here(1);
create_graph = Function({dt, ycollist}, {Default Local},
vlb = V List Box(
gb = dt << Graph Builder(Variables(X(:lot_id)))
);
For Each({colname, idx}, ycollist,
gb << Add Variable({Eval(colname), Role("Y")});
gb << Add Element(1, idx, {Type("Box Plot"), X, Y}); // define boxplots
gb << Remove Element(1, idx, 1); // remove points
);
return(vlb);
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open("$SAMPLE_DATA\semiconductor capability.jmp");
// could also just create journal and add new_vlb to that
nw = New Window("Collector",
vlb = V List Box()
);
For Each({my_group}, my_groups,
new_vlb = create_graph(dt, my_group);
vlb << Append(new_vlb);
);준다

즉
{"PNP1", "PNP2", "PNP3"} 그리고
{"NPN3", "NPN2", "NPN1", "NPN4"}내 첫 번째 게시물에서 언급한 것처럼 y축(즉, 사양 제한 기준선이 표시되는 다른 하나 위에 표시됨)과 두 개의 별도 차트에 표시되지 않습니다.
위에서 언급했듯이 플롯할 매개변수는 다음 별도의 표와 같이 그룹화됩니다.
Names Default To Here( 1 );
dtg = New Table( "Parameter Groups",
Add Rows( 11 ),
New Column( "Parameter", Character, Nominal,
Set Values( {"PNP1", "PNP2", "NPN2", "NPN3", "INV2", "NPN1", "PNP3", "NPN4", "INV3", "PNP6", "INV4"} ) ),
New Column( "Group", Character, Nominal, Set Values( {"DC", "DC", "AC","AC","RF","AC","DC","AC", "RF", "DC", "RF"} ) )
);각 차트의 매개변수를 위 표의 그룹 열 항목별로 그룹화하고 싶습니다.
예를 들어 Top 플롯에는 다음과 같은 타일이 있습니다. DC ~와 함께 "PNP1", "PNP2", "PNP3" 및 "PNP6" y축에 표시되고 그 아래에는 제목이 있는 다음 차트가 표시됩니다. 교류 ~와 함께 "NPN2", "NPN3", "NPN1" "NPN4"가 플롯되고 마지막으로 제목이 있는 하단에 세 번째 차트가 표시됩니다. "RF" ~와 함께 "INV2" 및 "INV4" "를 y축에 표시했습니다.
계속 진행하려면 연관 배열 접근 방식에 대해 도움을 받을 수 있습니까? 이런 식으로 나는 독특한 것을 얻을 수 있습니다 여러 떼 , 그러나 관련 항목을 얻는 방법 매개변수(여기서 행 가져오기() 사용) ?
gg = Associative Array (dt:Group);
gg << get keys;
( @jthi , 나는 보고 싶은 것에 따라 더 많은 유연성을 제공하기 때문에 저널 외에 "수집기" 창 옵션을 선호합니다)
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?JMP 16을 사용하여 귀하가 겪고 있는 문제를 재현할 수 있었습니다.원하는 결과를 얻기 위해 변수 추가 등을 사용하지 못했습니다.그러나 Graph Builder JSL을 문자열 변수로 생성한 후 실행하는 기술을 사용하여 상자 그림을 얻을 수 있었습니다.

Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@txnelson 이는 16.2에서 작동합니다(JMP는 구문 오류를 불평하지만 여전히 차트를 그립니다).
다른 목록이 있으면
paraGroupList = {"DC", "AC"};할당하는 방법 DC 차트 제목으로(현재 PNP1 외 2개 대 lot_id ) 플롯할 때(상단 차트)
{"PNP1", "PNP2", "PNP3"}그리고 교류 차트 제목으로(현재 NPN3 외 3개 대 lot_id ) 플로팅할 때(하단 차트)?
{"NPN3", "NPN2", "NPN1", "NPN4"}Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?그래프를 실행합니다.
제목을 클릭하고 변경하세요.
그런 다음 빨간색 삼각형으로 이동하여 스크립트 저장을 선택하세요.
스크립트를 보면 JSL과 제목이 어떻게 변경되었는지 확인할 수 있습니다.
이를 스크립트에 적용하세요.
시간을 내어 스크립팅 가이드를 읽어 보시기 바랍니다.JSL 학습 속도를 높여줍니다.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@txnelson 감사합니다. 차트 제목을 어떻게 작성하는지 알아냈습니다.
탈출하는 방법 create_graph 다음과 같은 경우 함수 ycollist 비었다?
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?Length() 함수를 사용하여 목록에 항목이 있는지 확인한 다음 코드를 우회하세요.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@txnelson 감사해요.사용할 수 없을 것 같습니다 부서지다 () for 루프 내에서 사용되는 경우 내 플로팅 함수 내에서. 어떤 옵션이 있는지 살펴 보겠습니다.
Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?필요한 평가를 하고, 충족되지 않으면 코드를 우회하세요.아래를 참조하세요:
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
If( Length( colname ) != 0,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
);
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
);Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?@txnelson 감사해요. 스크립트를 실행하면 제거할 수 없는 오류(JMP 16.2에서)가 발생합니다.

Re: 그래프 빌더에 표시된 열을 열 이름 범주를 사용하여 PAGE로 구분할 수 있나요?죄송합니다. 이전 답변으로 달려갔습니다.아래 JSL은 my_group이 비어 있으면 그래프 생성을 우회합니다.
Names Default To Here( 1 );
create_graph = Function( {dt, ycollist},
{Default Local},
theExpr =
"vlb = V List Box(
gb = dt << Graph Builder(Size( 1469, 718 ),Variables(X(:lot_id)";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Y(:\!"" || colname || "\!"n)"
);
theExpr = theExpr || ")";
For Each( {colname, idx}, ycollist,
theExpr = theExpr || ",Elements( Position( 1," || Char( idx ) ||
" ), Box Plot( X, Y) ) "
);
theExpr = theExpr || ");";
Eval( Parse( theExpr ) );
Return( vlb );
);
my_groups = {{"PNP1", "PNP2", "PNP3"}, {"NPN3", "NPN2", "NPN1", "NPN4"}};
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
// could also just create journal and add new_vlb to that
nw = New Window( "Collector", vlb = V List Box() );
For Each( {my_group}, my_groups,
If( Length( my_group ) != 0,
new_vlb = create_graph( dt, my_group );
vlb << Append( new_vlb );
vlb = V List Box();
)
);