주어진 part_ID에 해당하는 열에 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 있는 경우 상자 그림을 생성하는 방법은 무엇입니까?내 데이터 테이블의 열 1에 part_ID 항목이 있습니다. 열 2에는 5개의 요약 매개변수(최소, Q1, 중앙값 Q3, 최대)와 테스트 한계 LSL, USL이 표시됩니다. 열 1에서 부품 ID는 7번 반복됩니다(요약 매개변수 5개 + LSL 및 USL, 총 7개에 해당). 그 후 다음 부품 ID(및 열 2의 해당 7개 숫자)가 나타납니다.
데이터 테이블의 형식을 변경하고 싶지 않습니다(예: 전치하고 싶지 않음).
5개의 요약 매개변수와 한계를 사용하여 상자 그림 추세 차트(X축에 부품 ID 포함)를 생성하고 싶습니다. JSL을 통해 이를 수행하는 방법은 무엇입니까?
자동화 및 스크립팅윈도우Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?데이터 형식을 더 나은 형식으로 변경하지 않는 특별한 이유가 있나요?
에서

관리하기 쉬운 것으로

어느 행이 어느 행인지 표시가 없는 경우 항상 같은 순서로 되어 있습니까?
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi 감사해요. 내 원본 데이터는 하단 테이블 형식이지만 추가적으로 측정된 매개변수 이름이 추가 열로 포함되어 있습니다. 이 양식에서는 7개의 매개변수를 사용하여 상자 그림을 그리는 방법을 알고 있습니다.
나는 JMPs Summary() 함수를 사용하여 상위 테이블 형식으로 데이터를 가져옵니다.
측정된 매개변수 데이터(예: 상단 표의 열 3)를 열에 표시하는 형식으로 다른 차트를 플롯하려면 이 양식이 필요합니다. 동일한 부품에 대해 서로 다른 범위(별도의 열에 나타남)가 있는 여러 측정 매개변수가 있으며 이를 Y축에 표시하고 열에 서로 다른 측정 매개변수에 대한 데이터만 있으면 서로 다른 Y축 배율을 가질 수 있습니다. JMP(X축에 부품 ID 포함) 다양한 측정 매개변수는 서로 연관되어 있으며 이러한 플롯은 상대적 추세를 이해하는 데 도움이 됩니다.
위에서 내 데이터가 상위 테이블 형식인 이유를 설명하길 바랍니다.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?이 게시물은 몇 가지 아이디어를 줄 수 있습니다. 이미 요약된 값에서 상자 그림 만들기 .
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi . 감사해요. 링크에 있는 레시피 잘 봤습니다. 설명된 방법은 데이터가 내가 원하는 것이 아닌 두 번째 테이블의 형식인 경우에만 작동하는 것 같습니다.
JMP가 계산하는 대신 주어진 부품 ID(첨부된 열 1)에 대해 인접한 열(첨부된 예제 데이터 세트의 레이블)에 지정된 Min, Q1, Median, Q3, Max를 사용하여 상자 그림을 생성하도록 JMP에 지시할 수 있는 경우 이 값 자체가 각 부분에 대한 값의 분포를 통해 내가 원하는 것을 얻을 수 있다고 생각합니다.JSL을 통해 이것이 가능합니까?
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?Rect() 및 Line()을 사용하여 상자 그림을 작성해 볼 수 있습니다(작동할 수 있는 상자 그림 세그먼트도 있지만 데이터를 시뮬레이션하거나 빈도를 사용해야 함).
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi 고맙습니다. 상자 그림 세그먼트를 사용하여 내가 원하는 작업을 수행할 수 있을 것 같습니다.
스크립팅 인덱스 예제에서는 예제 데이터(이전에 첨부됨)에서와 같이 각 부품 ID(x축)에 대한 상자 그림을 생성하는 방법이 명확하지 않습니다.
부품 ID를 반복해야 합니까? 어떤 경우 프레임 크기, 규모를 결정하는 방법은 무엇입니까?
제가 작성한 예제 데이터를 이용하여 기본적인 예제를 얻을 수 있다면 도움이 될 것입니다.

Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?상자 그림 세그먼트는 단일 프레임 상자에 대한 단일 상자 그림을 만드는 데만 사용할 수 있으며 중앙에 있을 수 있습니다.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi 감사해요.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?현재 사용 중인 데이터 형식을 강제로 사용하는 경우에도 테이블에 새 열을 추가할 수 있습니다. 각 통계에 대해 하나의 열을 생성하여 이전 링크의 옵션 1을 따르거나 두 개의 열(값 + 빈도)을 추가한 다음 두 번째 옵션을 따를 수 있습니다. 또는 그래픽 스크립트를 사용하여 다양한 부품을 완벽하게 사용자 정의하여 제작할 수 있습니다.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi . 상위 테이블(및 첨부된 내 테이블)의 형식으로 데이터를 갖는 전체 이유는 Y 플롯별로 그룹에서 서로 다른 스케일을 가질 수 있기 때문입니다.
https://community.jmp.com/t5/Discussions/Can-you-change-y-axis-scale-independently-from-other-y-axis/td-p/17649
페이지 옵션을 원하지 않아서 가서 팔로우했습니다. @txnelson 관련 데이터를 그가 제안한 형식, 즉 별도의 열에 넣으라는 제안입니다(내가 그의 제안을 올바르게 이해했다고 가정).
Page를 사용하지 않고 다른 방법이 있는 경우 @txnelson 의 제안(또 다른 유사한 여기 ), 나는 모두 귀입니다
.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi 이전에 이 스레드에 첨부된 예제 데이터에서와 같이 데이터 형식을 유지해야 하기 때문에 다시 이 주제에 대해 제안해 주셔서 감사합니다. 아래 스크립트를 사용하면 필요한 것을 거의 얻을 수 있습니다(더 좋은 방법이 있을 수 있지만 아래는 제 이야기입니다). 두 가지 도움이 필요합니다.
- 각 partID에 대해 Min과 Max를 연결하는 검은색 수직선을 그려야 합니다(현재 로컬 데이터 필터에서 선택되지 않음, 아래 왼쪽 차트). 로컬 데이터 필터(아래 오른쪽 차트)에서 최소/최대를 선택하면 수직 검정색 선(현재 오른쪽 차트의 검은 점 대신)으로 연결되며 거의 상자 그림의 구조에 도달하게 됩니다. 충분하고 목적에 적합하다고 생각합니다. 각 부품 ID(V 라인()?)에 대해 JSL을 통해 이 수직선을 얻는 방법은 무엇입니까?
- 둘째, 실제 데이터에서 측정된 매개변수(예제 데이터의 전류, 저항)는 >40입니다. 따라서 저는 스크립트에서 했던 방식으로 범례 색상 설정을 수행하고 싶지 않습니다. 기본적으로 범례 색상을 검정색으로 설정하는 방법(그렇지 않으면 JMP가 각 Y 그룹의 색상을 다르게 지정하고 마커 색상을 설정한 방식이 아님)
Names Default To Here (1);
clear log ();
dt = Current Data Table ();<BR />
//Set LSL/USL marker and color
dt << Row Selection(
Select where( Contains( :Label, "LSL" ) | Contains( :Label, "USL" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Red" );
dt << Clear Select;<BR />
// Set Q1/Q3 marker and color
dt << Row Selection(
Select where( Contains( :Label, "Q1" ) | Contains( :Label, "Q3" ) ),
Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 29 ) << Colors( "Black" );
dt << Clear Select;<BR />
//Set Median arker and color
dt << Row Selection(
Select where( Contains( :Label, "Median" ) ),Match case( 1 ),
Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( 0) << Colors( "Blue" );
dt << Clear Select;<BR />
// Plot chart
gb = Graph Builder(
Size( 404, 412),<BR /> Show Control Panel( 0 ),
Variables( X( :partID ), Y( :Resistance ), Y( :Current ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 37 ), Jitter( "None" ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 35 ), Jitter( "None" ) ) ),
Local Data Filter(
Add Filter(
columns( :Label ),
Where( :Label == {"LSL", "Median", "Q1", "Q3", "USL"} )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
37,
Properties( 0, {Line Color( 0 )}, Item ID( "Resistance", 1 ) )
), Legend Model(
35,
Properties( 0, {Line Color( 0 )}, Item ID( "Current", 1 ) )
)}
)
)
);

Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?위에 추가된 이 추가 스크립트는 V Line()을 사용하여 원하는 것을 제공합니다.
PartID =1에 대한 예입니다(아래 차트). 루프에서 이것을 자동으로 만드는 방법은 무엇입니까?
gbr = gb << report;
// For FrameBox (1)
Q1_Part1_Para1 = 2.75;
Q3_Part1_Para1 = 3.1;
// For FrameBox (2)
Q1_Part2_Para1 = 250;
Q3_Part2_Para1 = 302;
PartNo = 1;
Eval(EvalExpr(gbr [Framebox (1)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part1_Para1, Q3_Part1_Para1);
)));
Eval(EvalExpr(gbr [Framebox (2)]<< Add graphics Script (
Pen color (black); V Line (PartNo-1, Q1_Part2_Para1, Q3_Part2_Para1);
)));
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?Summarize()를 사용하여 고유한 partID 값을 얻을 수 있습니다. 그런 다음 Loc() 조합과 함께 데이터 테이블 첨자를 사용하여 루핑하는 동안 특정 partID에 대한 행을 가져올 수 있습니다. 그런 다음 값을 계산/가져오고 라인을 추가하세요.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi
>> Summarize()를 사용하여 고유한 partID 값을 얻을 수 있습니다.
좋아요
>>그런 다음 Loc() 조합과 함께 데이터 테이블 첨자를 사용하여 반복하는 동안 특정 partID에 대한 행을 가져올 수 있습니다.
Loc()을 사용한 적이 없습니다. 각 partID에 대한 X 좌표를 제공합니까? 내 예제 데이터가 포함된 예제는 매우 유용할 것입니다.
>> 그런 다음 값을 계산/가져오고 라인을 추가하십시오.
다른 숫자인 Min, Max, Q1, Q3 및 Median이 이미 계산되었으므로 각 부품의 X 좌표를 계산한다는 뜻입니까?
또한 각 FrameBox를 반복해야 합니까, 아니면 더 간단한 대안이 있습니까?
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?부품 ID는 테이블(및 요약)에 있는 것과 동일한 순서로 그래프에 있으므로 이미 x 좌표가 있습니다. 필요한 모든 값이 이미 계산되어 있는 경우 데이터 테이블에서 해당 값을 검색할 수 있습니다. 다음은 Summarize, Loc 및 데이터 테이블 첨자를 사용한 예입니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, uniq_vals = by(:age)); // Summarize returns characters
For Each({uniq_val}, uniq_vals,
val_rows = Loc(dt[0, "age"], Num(uniq_val));
show(val_rows);
f_rows = val_rows[Loc(dt[val_rows, "sex"], "F")];
show(f_rows);
f_heights = dt[f_rows, "height"];
show(f_heights);
);
두 개의 프레임 상자만 있지만 그 안에 여러 줄을 추가하려고 하므로 FrameBox를 반복할 필요가 없습니다(partId를 반복).
편집하다:
또한 Loc 대신 << Get Rows Where를 사용할 수 있습니다. 일반적으로 사용하기가 더 쉽기 때문입니다.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi . 좋아요. 감사해요. 한번 시도해 보겠습니다(막히면 다시 올 것입니다).
실제 데이터 세트에서 측정된 매개변수의 수는 >50(더 많을 수 있음)이므로 50개의 매개변수 추세 플롯을 모두 서로 위에 플롯하면 50개의 FrameBox가 있으므로 FrameBox를 반복하는 것에 대한 질문입니다.
또한 내 PartID = 1의 경우 위 스크립트에서 V Line()의 X 좌표에 대해 X= 0을 사용하도록 광고합니다. 이것이 예상되는 방식입니까(즉, V 라인의 x 좌표는 1로 표시되지만 1이 아닌 0에서 시작합니다)?
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?매개변수가 그렇게 많으면 추가 루프를 갖는 것이 좋습니다.
그리고 X = 0인 경우 시도해 보는 것이 좋습니다. 무슨 일이 일어나는지 확인하세요(이 방법을 통해 일반적으로 가장 많은 것을 배울 수 있습니다). X축 설정에서도 값이 0이고 라벨이 1인 것을 확인할 수 있습니다.

Re: 주어진 part_ID에 해당하는 열에 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 있을 때 상자 그림을 생성하는 방법은 무엇입니까?@jthi 좋아요. 감사해요. 또 한 가지가 나를 괴롭히고 있습니다. 내 스크립트에서 지터를 껐지만 상단(Q3) 및 하단(Q1) 마커가 여전히 오프셋과 함께 나타납니다. 이를 테스트하기 전에 첨부된 데이터 테이블을 사용하여 스크립트를 실행할 수 있습니다(저는 JMP 16.2를 사용하고 있습니다).
꺼야 할 또 다른 지터 설정이 있습니까?
Q1 및 Q3에 대한 마커를 설정하기 위해 다음을 사용하면(수직선을 그리기 전에 상자 모양을 얻으려고 시도함) 지터/오프셋이 더 분명해집니다. 그러나 수평 마커를 사용하더라도 약간의 오프셋이 보입니다. 뭔가 빠졌나요?
// Q1/Q3 marker and color
dt << Row Selection(Select where(Contains( :Label, "Q3" ) ),Match case( 1 ),Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Π" ) << Colors( "Black" );
dt << Clear Select;
dt << Row Selection(Select where( Contains( :Label, "Q1" ) ), Match case( 1 ), Dialog( Edit( Contains( Source Column( :Label ) ) ) )
) << Markers( "Џ" ) << Colors( "Black" );
dt << Clear Select;
수정: 오프셋은 차트의 JMP 렌더링으로 인해 발생한 것으로 보입니다. 차트를 가로로 늘리면 오프셋이 수정됩니다.
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?이렇게 확인하다
frame = (gbr)[FrameBox( 1 )];
seg = (frame << FindSeg( Marker Seg( 1 ) ));
{method, axis, limit, spacing, seed} = seg << Get Jitter();지터를 없음으로 설정한 후에도 "시드" 값을 얻습니다.
{"None", "XY", 1, 0, 184430754}내 포인트가 흔들리나요(그렇게 나타남)?
Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?지터가 없음으로 설정되어 있습니다.

내 생각엔 임의의 노이즈가 추가되어서는 안 된다는 뜻인 것 같아요

Re: 5개의 요약 매개변수(Min, Q1, Median Q3, Max)와 한계(LSL, USL)가 주어진 part_ID에 해당하는 열에 있을 때 상자 그림을 생성하는 방법은 무엇입니까?이전 스크립트(이 스레드의)에서 호출된 이 추가 스크립트는 내가 원하는 작업을 수행합니다. 스크립트는 내 데이터에만 적용되지만 여러 프레임박스에 걸쳐 루프 내에서 V Line()을 플롯하는 방법을 보여줍니다.
로컬 데이터 필터에서 선택된 Q1, Q2 및 중앙값을 사용하여 Graphbuilder에서 BoxPlots로 변경하면 적절한 상자 그림이 표시됩니다. V 선()은 최대값과 최소값을 연결하여 상자 그림의 구조를 완성합니다.Q1, Q2만 선택되고 나머지 데이터는 무시되므로 올바른 상자를 얻는다고 생각합니다(로컬 데이터 필터에서 Min 및 Max와 같은 더 많은 매개변수를 선택하면 잘못된 상자가 제공됨).
Names Default To Here (1);
Clear Log ();
setVLines_atMinMax = Function ( {gbr, FrameboxNo, PartNo, Min, Max}, {},
Eval(EvalExpr(gbr [Framebox (FrameboxNo)]<< Add graphics Script (
V Line (Expr(PartNo-1), Expr(Min), Expr(Max));
)));
);
gbr = gb << report;
nParts =5;
nc = ncols (dt); //number of coulms in my data table
For (j =1, j <=(nc-1), j++,
FrameboxNo = j;
for ( i = 1, i <= nParts, i++,
ind = (7*i-3); //show (ind);
ind_next = (7*i -3) + 1; //show (ind_next);
PartNo = Num(:PartID[ind]); //show (PartNo);
Min = Column(nc) [ind]; show (Min);
Max = Column(nc) [ind_next]; show (Max);
setVLines_atMinMax (gbr, FrameboxNo, PartNo, Min, Max);
);
nc = nc-1;
);
//show (FrameboxNo); show (nc);
