참조선을 어떻게 변경할 수 있나요? 숫자 없음안녕 아래 그래프와 같이 두 데이터의 Std 평균을 기준선에 넣고 싶습니다.
아래 JMP 스크립트에서는 Std 평균 13.2(22.2+4.2)/2 = 13.2를 임의로 작성했습니다.
실제로 내가 사용하는 데이터는 2개 이상이다. (아래 이미지는 예시일 뿐입니다)
어떻게 스크립트 변경을 할 수 있나요?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
Graph Builder(
Size( 1056, 825 ),
Variables( Y( :height ), Y( :weight ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 7 ) ),
Caption Box( Y, Legend( 13 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 8 ) ),
Caption Box( Y, Legend( 14 ), Summary Statistic( "Std Dev" ) )
),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( 13.3, "Solid", "Medium Dark Red", "Std Dev mean", 2 )}
),
Dispatch(
{},
"weight",
ScaleBox,
{Add Ref Line( 13.3, "Solid", "Medium Dark Red", "Std Dev mean", 2 )}
)
)
);
Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음다음은 Age와 같은 특정 하위 그룹에 대한 열 통계를 캡처하는 데 사용하고 사용자가 사용하는 방법입니다.

여기에 스크립트가 있습니다.동일한 방법을 사용하여 원하는 추가 참조선을 추가하기만 하면 됩니다.
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb = Graph Builder(
Size( 1056, 825 ),
Variables( X( :height ), Group Y( :age ) ),
Elements(
Bar( X, Legend( 17 ) ),
Caption Box( X, Legend( 15 ), Response Axis( "X" ) ),
Caption Box(
X,
Legend( 16 ),
Response Axis( "X" ),
Summary Statistic( "Std Dev" )
)
)
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Mean( if(:age == 12,:height,.) ) + 4*Col Std Dev( If(:age==12,:height,) ),
"Solid",
"Medium Dark Red",
"Std Dev mean 12",
2
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Min( if(:age == 12,:height,.) ),
"Solid",
"Medium Dark Red",
"Min 12",
2
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Max( if(:age == 12,:height,.) ),
"Solid",
"Medium Dark Red",
"Max 12",
2
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Mean( if(:age == 13,:height,.) ) + 4*Col Std Dev( If(:age==13,:height,) ),
"Solid",
"Medium Dark Red",
"Std Dev mean 13",
2
);
Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음@txnelson
친절하게 답변해 주셔서 감사합니다!
마지막으로 하나 더 남았습니다! 질문.
귀찮게 해서 미안..
모든 그룹(연령)에 기준선 Max, min(Mean + 4 * Std dev)을 추가하고 싶습니다.
문제는 아래 스크립트가 작동하지 않습니다.
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb = Graph Builder(
Size( 1056, 825 ),
Variables( X( :height ), Group Y( :age ) ),
Elements(
Bar( X, Legend( 17 ) ),
Caption Box( X, Legend( 15 ), Response Axis( "X" ) ),
Caption Box(
X,
Legend( 16 ),
Response Axis( "X" ),
Summary Statistic( "Std Dev" )
)
)
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Mean( :height ) + 4*Col Std Dev( :height ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
그리고 또 다른 문제는 모든 그룹(연령)에서 Max, Min(Mean + 4 * Std dev)을 어떻게 추출할 수 있는지입니다.
기준선 Max(Mean + 4 * Std dev), Min(Mean + 4 * Std dev)을 모두 그룹에 동일하게 적용하고 싶습니다.
Max(), Min() 함수를 사용할 수 있을 것 같아요...
Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음지적하신 문제를 확인했습니다.표시 트리에는 4개의 개별 축이 있다고 표시되어 있지만 JMP에서는 실제로 이를 2개의 축으로 처리합니다.따라서 제가 생각하기에 원하는 것에 최대한 가까워지기 위해 수행해야 할 작업은 Sex 값을 기준으로 키와 몸무게에 대한 데이터를 4개의 열로 가져온 다음 4개의 변수를 별도로 플롯하는 것입니다.

여기 JSL이 있습니다
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
dtSplit = dt << Split(
Split By( :sex ),
Split( :height, :weight ),
Remaining Columns( Drop All ),
Sort by Column Property
);
gb = dtSplit << Graph Builder(
Variables( Y( :height F ), Y( :weight F ), Y( :height M ), Y( :weight M ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 11 ) ),
Caption Box( Y, Legend( 15 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 12 ) ),
Caption Box( Y, Legend( 16 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 3 ),
Caption Box( Y, Legend( 17 ), Summary Statistic( "Std Dev" ) ),
Points( Y, Legend( 18 ) )
),
Elements(
Position( 1, 4 ),
Points( Y, Legend( 14 ) ),
Caption Box( Y, Legend( 19 ), Summary Statistic( "Std Err" ) )
),
SendToReport(
Dispatch(
{},
"weight F",
ScaleBox,
{Min( 49.5141101773061 ), Max( 150.319351489306 ), Inc( 20 ),
Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
18,
Properties( 0, {Line Color( 21 )}, Item ID( "height M", 1 ) )
), Legend Model(
14,
Properties( 0, {Line Color( 19 )}, Item ID( "weight M", 1 ) )
)}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {11, [0], 12, [1], 18, [3], 14, [2]} ),
Position( {0, 1, 3, 2} )}
)
)
);
Report( gb )[AxisBox( 2 )] << Add Ref Line(
Col Std Dev( :Height F ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( :Weight F),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 4 )] << Add Ref Line(
Col Std Dev( :Height M ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 5 )] << Add Ref Line(
Col Std Dev( :Weight M ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음@txnelson
답장을 보내 주셔서 감사합니다.
아래 스크립트에서는 그룹 F의 모든 STD 값이 그룹 M STD 값으로 기록됩니다.
어떻게 그들을 두 그룹으로 나눌 수 있습니까?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb = Graph Builder(
Size( 1056, 825 ),
Variables( Y( :height ), Y( :weight ), Group Y( :sex ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 7 ) ),
Caption Box( Y, Legend( 13 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 8 ) ),
Caption Box( Y, Legend( 14 ), Summary Statistic( "Std Dev" ) )
)
);
Report( gb )[AxisBox( 2 )] << Add Ref Line(
Col Std Dev( If( :sex == "F", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( If( :sex == "F", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 4 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 5 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Weight, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음이전 응답에서 볼 수 있듯이 참조선을 추가하려면 참조선을 추가하려는 축에 << Add Ref Line 메시지를 전달하기만 하면 됩니다.
Report( gb )[AxisBox( 2 )] << Add Ref Line( Col Std Dev( :Height ), "Solid", "Medium Dark Red", "Std Dev mean", 2 );
어떤 축을 적절하게 가리킬지 찾으려면 그래프 빌더 출력의 트리 구조를 조사해야 합니다.이렇게 하려면 그래프 빌더 제목 옆에 있는 회색 삼각형을 마우스 오른쪽 버튼으로 클릭하고
편집==>트리 구조 표시


그런 다음 그래프 창을 트리 구조 창에 맞춰 정렬하고 그래프 창에서 트리 구조를 확인하려는 항목을 클릭하면 JMP가 트리 구조 창의 해당 구조로 이동합니다.

여기에서 볼 수 있듯이 Sex=="F"에 대한 높이 열의 축은 AxisBox(2)입니다.
문제의 각 축을 클릭하면 기준선을 추가하기 위해 어떤 축 상자를 가리킬지 알 수 있습니다.Sex=="M"에 대한 질문의 마지막 축인 Weight 열은 다음과 같습니다.

이제 수행해야 할 작업은 JSL을 확장하여 4개 축 모두에 대한 참조선을 생성하고 각 참조선 추가 메시지에서 참조선 배치에 대한 올바른 값을 계산하는 것입니다.다음은 참조 줄 추가 코드 4줄입니다.
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( If( :sex == "F", :Weight, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 2 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Weight, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
이 경우 표준 편차 계산을 위해 측정 열과 함께 성별 열을 고려해야 했습니다.
Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음@txnelson 신속한 답변에 감사드립니다!
질문이 하나 더 있습니다.
아래 이미지와 같이 데이터가 성별별로 그룹화되어 있으면 어떻게 처리할 수 있나요?
Re: 참조선을 어떻게 변경할 수 있나요? 숫자 없음다음은 각 열(:Height,:Weight)에 대한 표준 편차 값에 참조선을 그리는 스크립트에 대한 간단한 수정입니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb=Graph Builder(
Size( 1056, 825 ),
Variables( Y( :height ), Y( :weight ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 7 ) ),
Caption Box( Y, Legend( 13 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 8 ) ),
Caption Box( Y, Legend( 14 ), Summary Statistic( "Std Dev" ) )
)
);
report(gb)[AxisBox(2)]<<ADD ref="" line=""></ADD>