Graph Builder에서 boxplot을 생성하는 스크립트가 있지만 그래프에서 처음 캡처되었습니다. 코드는 다음과 같습니다.
inboundDataTable << New Script("Boxplots and Means for Sites w/Low Read Rates",
Names Default to Here(1);
Delete Symbols();
inboundData = Current Data Table();
inboundData << Graph Builder(
Size(650, 481),
Grid Color({79, 98, 40}),
Variables(X(:IDENT Code), Y(:Read Rate)),
Elements(
Box Plot(X, Y, Legend(2), Jitter("Random Normal")),
Points(X, Y, Legend(3), Summary Statistic("Mean"))
),
SendToReport(
Dispatch(
{},
"Read Rate",
ScaleBox,
{
Format("Percent", 5, 0),
Minor Ticks(4),
Add Ref Line(0.95, "Solid", {255, 0, 0}, "", 1),
Label Row({Show Major Grid(1), Show Minor Grid(1)})
}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
2,
Base(1, 0, 0, Item ID("Read Rate", 2)),
Properties(1, {Fill Color(0)}, Item ID("Read Rate", 2)),
Properties(
-1,
{Line Color(-4221340), Marker("FilledCircle"), Fill Color(0)},
Item ID("Mean", 1)
)
), Legend Model(
3,
Properties(
0,
{Line Color(-16776960), Marker("Diamond"), Fill Color(0)},
Item ID("Mean", 1)
)
)}
),
Dispatch({}, "X title", TextEditBox, {Set Text("Crossing (Site)")}),
Dispatch(
{},
"Graph Builder",
FrameBox,
{
Marker Size(5), Grid Line Order(1), Reference Line Order(2),
DispatchSeg(
Box Plot Seg("Box Plot (ALC)"),
{Line Color({44, 77, 117}), Fill Color({79, 129, 189}), Fill(1)}
),
DispatchSeg(
Box Plot Seg("Box Plot (CIA)"),
{Line Color({44, 77, 117}), Fill Color({79, 129, 189}), Fill(1)}
),
DispatchSeg(
Box Plot Seg("Box Plot (JKM)"),
{Line Color({44, 77, 117}), Fill Color({79, 129, 189}), Fill(1)}
),
DispatchSeg(
Box Plot Seg("Box Plot (POR)"),
{Line Color({44, 77, 117}), Fill Color({79, 129, 189}), Fill(1)}
),
DispatchSeg(
Box Plot Seg("Box Plot (RAI)"),
{Line Color({44, 77, 117}), Fill Color({79, 129, 189}), Fill(1)}
),
DispatchSeg(
Box Plot Seg("Box Plot (THO)"),
{Line Color({44, 77, 117}), Fill Color({79, 129, 189}), Fill(1)}
)
}
)
)
)
);아래쪽 근처에는 원래 그래프에서 생성된 각 상자 그림에 대한 DispatchSeg를 볼 수 있는 FrameBox 블록이 있습니다. 내가 하고 싶은 것은 코드의 해당 섹션을 동적으로 만드는 것입니다. 각 사이트 인구에 대해 사이트 수가 다를 수 있기 때문입니다.
필요한 것은 제외되지 않은 고유한 사이트의 수를 캡처한 다음 해당 수를 사용하여 루프를 만들어 각 상자 그림에 대한 선 및 채우기 색상을 설정하는 방법입니다. 어떻게 해야 할까요?
@mdawson69 ,
JMP 13용 GraphBuilder를 사용자 지정하기 위한 학습 스크립트로 생성되었지만 이후 버전에서 작동하는 "정보가 너무 많은" 예제가 있을 수 있습니다.그것은 또한 사용자 지정 레이블을 만듭니다.JMP 15에는 사용자 정의 텍스트를 더 쉽게 추가할 수 있는 Textlet, Graphlet 등의 새로운 기능이 있습니다. 스크립트가 첨부되고 생성되는 그림은 아래와 같습니다.
원하는 작업을 수행할 수 있는 몇 가지 주요 기능이 있습니다.
- X 변수로 정의된 상자 그림의 수를 얻는 방법. 이 스크립트는 boxplot 참조 bpseg[i]를 생성하는 XPath를 사용합니다.
- Dispatch 대신 JSL 전송 구문 <<를 사용하는 방법
- 루프를 위해.
JSL을 처음 사용하는 경우 다음에서 일부 기능을 찾아봐야 할 것입니다. 도움말 > 스크립팅 색인 ~을 위한 XPath , GraphBuilderBox 그리고 FrameBox.
아래에 설명된 대로 스크립트를 실행하는 것이 좋습니다.
- 1~50행을 강조 표시하고 실행합니다.
- 51~54행을 읽고 강조 표시하고 실행하고 모든 상자 그림에 적용된 변경 사항을 확인합니다.
- 한 번에 하나의 상자 그림을 변경하는 방법을 보려면 55~59행을 읽고 강조 표시하고 실행하십시오.
키 코드는 다음과 같습니다.
//assume you like March's style and do not want to show the points
//here is the code to set all
bpseg = gb << Xpath("//BoxPlotSeg");
bpseg << {Box Style( "Solid" ), Confidence Diamond( 1 ), Fences( 0 )};
//if you want to color each by month
for(i=1, i<=nitems(bpseg), i++,
bpseg[i] << Fill Color(Color Of(As Row State(cc[i])))
);
//if you want to remove points. since ponts are the 3rd element
report(gb)[GraphBuilderBox(1)] << remove element(1,1,3);
//to add them back, uncomment and run the next line
//report(gb)[GraphBuilderBox(1)] << Add Element(1, 1, {Type("Points"), X, Y});
이것으로 시작하기에 충분하기를 바랍니다.아, 저장된 스크립트에서 개별 boxplot을 대상으로 하는 Dispatch 문을 제거해야 합니다.첨부된 스크립트는 symatx와 학습 목적을 비교하기 위해 세 개의 디스패치 문을 보관했습니다.
