안녕하세요, JMPers 님,
저는 대규모 고객에게 JMP를 사용하도록 설득하려고 합니다.이제 JMP에서 응용 프로그램 중 하나를 재현하는 데 어려움을 겪고 있습니다.
제가 직면한 첫 번째 문제는 오버레이 옵션을 사용하는 동안 행 상태의 색상을 유지하고 싶다는 것입니다.
각 부분(Y축)의 두 점 사이를 연결하는 선이 있는 위의 그래프(파란색과 빨간색 점 포함)가 필요합니다.
오버레이를 사용하여 연결선을 얻을 수 있지만 색상을 수동으로 조정해야 합니다.
동시에 그래프에 여러 개의 상한 및 하한 사양을 추가해야 합니다.
결국 우리는 다음과 같은 그래프를 만들고 싶습니다.
여러 수동 단계(예: 프레임 내용 복사 및 붙여넣기)를 사용하여 그래프를 생성할 수 있었지만 목표는 특히 상호 작용을 유지하기 위해 표준 그래프 작성 도구를 사용하여 이 플롯을 생성하는 것입니다.
어떤 종류의 조언이라도 주시면 매우 기쁠 것입니다.
감사해요,
세바스찬
이것은 주어진 데이터 구조입니다:
New Table( "Sample",
Add Rows( 20 ),
New Column( "Part ID",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
),
New Column( "X1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] )
),
New Column( "X2",
Character,
"Nominal",
Set Values(
{"cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold",
"cold", "medium", "medium", "medium", "medium", "medium", "medium",
"medium", "medium", "medium", "medium"}
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If(
:X2 == "cold", Random Normal() + 10,
:X2 == "medium", Random Normal() + 12,
Random Normal()
)
)
),
New Column( "Y_USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16]
)
),
New Column( "Y_LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] )
),
Set Row States(
[768, 768, 1280, 1280, 1280, 1280, 1280, 1280, 768, 768, 768, 768, 1280,
1280, 1280, 1280, 1280, 1280, 768, 768]
)
)
그런데 "JSL Syntax Highliger"에 대한 링크가 손상된 것 같습니다. 적어도 나는 빈 페이지로 끝난다.
JSL 스크립팅을 거의 사용하지 않고도 원하는 결과를 얻을 수 있습니다. 먼저 범위 오차 막대가 있는 막대 차트를 만듭니다. 그런 다음 막대의 투명도를 0으로 설정하여 막대가 사라지도록 합니다. 이제 Shift 키를 누른 채 클릭하여 점 세트를 추가하세요. 이 JSL을 스크립트 창에 저장합니다.
스크립팅의 유일한 부분은 Col Maximum()/ 열 최소() 참조선을 그리는 기능입니다.

Graph Builder(
Size( 663, 468 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Y ), Y( :Part ID ) ),
Elements(
Bar( X, Y, Legend( 16 ), Error Bars( "Range" ) ),
Points( X, Y, Legend( 14 ), Jitter( 0 ) )
),
SendToReport(
Dispatch(
{},
"Y",
ScaleBox,
{Format( "Best", 12 ), Min( 5.64697504725641 ), Max( 16.37329465957 ),
Inc( 2 ), Minor Ticks( 1 ),
Add Ref Line( Col Minimum(:Y_LSL), "Dashed", "Red", "", 2 ),
Add Ref Line( Col Maximum(:Y_USL), "Dashed", "Red", "", 2 ),
Add Ref Line( Col Maximum(:Y_LSL), "Solid", "Blue", "", 2 ),
Add Ref Line( Col Minimum(:Y_USL), "Solid", "Blue", "", 2 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
16,
Properties( 0, {Fill Color( 2 ), Transparency( 0 )} )
)}
),
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 4 )} )
)
);다음은 출력 그래프에 대해 원하는 것을 생성하는 스크립트입니다. 이전과 마찬가지로 샘플 데이터 테이블을 추가했지만 한 가지만 추가했습니다. Graph Builder가 행 상태 색상과 동일한 색상을 사용하도록 하는 방법은 실제로 Part_ID의 값 색상을 원하는 색상으로 설정하는 것입니다. 그런 다음 그래프 빌더는 해당 색상을 오버레이에 사용합니다. 그래프 빌더 코드에는 축 참조선도 추가되었습니다. 이제 제가 제공하는 코드는 정적 코드이지만 JSL은 데이터 테이블을 읽고 필요한 참조선을 파악한 다음 필요에 따라 Graph Builder 코드를 수정하여 필요한 플랫폼 코드를 쉽게 생성할 수 있습니다. 마지막으로 실제 선 색상을 수동으로 수정한 다음 전체 그래프 빌더 스크립트를 저장했습니다. 귀하의 질문에서 나는 귀하가 원하는 결과를 얻는 방법을 알고 싶어한다고 가정했습니다. 그래서 내 반응. 일반 데이터 테이블에서 그래프를 만드는 것은 내 응답에 포함되지 않지만 스크립트로 작성될 수는 있습니다.
Names Default to Here( 1 );
New Table( "Sample",
Add Rows( 20 ),
New Column( "Part ID",
Numeric,
"Nominal",
Format( "Best", 12 ),
Set Property( "Value Colors", {1 = 3, 2 = 3, 3 = 5, 4 = 5, 5 = 5, 6 = 5, 7 = 5, 8 = 5, 9 = 3, 10 = 3} ),
Set Values( [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
),
New Column( "X1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] )
),
New Column( "X2",
Character,
"Nominal",
Set Values(
{"cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "cold", "medium", "medium", "medium",
"medium", "medium", "medium", "medium", "medium", "medium", "medium"}
)
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( :X2 == "cold", Random Normal() + 10, :X2 == "medium", Random Normal() + 12, Random Normal() ) )
),
New Column( "Y_USL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16] )
),
New Column( "Y_LSL",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] )
),
Set Row States(
[768, 768, 1280, 1280, 1280, 1280, 1280, 1280, 768, 768, 768, 768, 1280, 1280, 1280, 1280, 1280, 1280, 768, 768]
)
);
Graph Builder(
Size( 509, 443 ),
Show Control Panel( 0 ),
Variables( X( :Y ), Y( :Part ID ), Overlay( :Part ID ) ),
Elements( Line( X, Y, Legend( 4 ), Row order( 1 ) ), Points( X, Y, Legend( 6 ), Jitter( 0 ) ) ),
SendToReport(
Dispatch(
{},
"Y",
ScaleBox,
{Min( 5.43667408790577 ), Max( 16.635593220339 ), Inc( 2 ), Minor Ticks( 0 ),
Add Ref Line( 16, "Dashed", "Red", "", 2 ), Add Ref Line( 15, "Solid", "Medium Dark Blue", "", 2 ),
Add Ref Line( 7, "Solid", "Medium Dark Blue", "", 2 ), Add Ref Line( 6, "Dashed", "Medium Dark Red", "", 2 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
4,
Properties( 0, {Line Color( 0 )} ),
Properties( 1, {Line Color( 0 )} ),
Properties( 2, {Line Color( 0 )} ),
Properties( 3, {Line Color( 0 )} ),
Properties( 4, {Line Color( 0 )} ),
Properties( 5, {Line Color( 0 )} ),
Properties( 6, {Line Color( 0 )} ),
Properties( 7, {Line Color( 0 )} ),
Properties( 8, {Line Color( 0 )} ),
Properties( 9, {Line Color( 0 )} )
), Legend Model(
6,
Properties( 0, {Marker( "FilledCircle" )} ),
Properties( 1, {Marker( "FilledCircle" )} ),
Properties( 2, {Marker( "FilledCircle" )} ),
Properties( 3, {Marker( "FilledCircle" )} ),
Properties( 4, {Marker( "FilledCircle" )} ),
Properties( 5, {Marker( "FilledCircle" )} ),
Properties( 6, {Marker( "FilledCircle" )} ),
Properties( 7, {Marker( "FilledCircle" )} ),
Properties( 8, {Marker( "FilledCircle" )} ),
Properties( 9, {Marker( "FilledCircle" )} )
)}
)
)
);
