GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?
JMP 14 및 15의 GraphBuilder BoxPlot 세그먼트에는 내장된 호버 레이블이 있는 것으로 보입니다.
대화식으로 호버 레이블을 고정할 수 있습니다.
아래에 포함된 고정된 호버 레이블 및 연결된 저장된 스크립트의 그림입니다.
BoxPlotSeg 울타리에 액세스하는 데 관심이 있습니다. 울타리 값에 액세스하기 위한 JSL 구문을 찾지 못했습니다. 대화식 세션의 저장된 스크립트에서 이러한 펜스 값은 GraphBuilder에 내재되어 있음이 분명해 보입니다. Outlier BoxPlot에 대한 울타리 값을 찾거나 계산하는 방법을 알고 있습니다. 그러나 JMP가 GraphBuilder 또는 다른 방법을 통해 값을 노출한 경우 펜스 값에 액세스하는 방법을 알고 싶습니다.

Open( "$Sample_Data/Analgesics.jmp" ) <<
Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :drug ), Y( :pain ) ),
Elements( Points( X, Y, Legend( 5 ) ), Box Plot( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
Add Pin Annotation(
Seg( Box Plot Seg( 2 ) ),
Index( {1, 1} ),
Index Row( {1, 1} ),
UniqueID( 568563361 ),
FoundPt( {321, 356} ),
Origin( {1.14256198347107, 3.97321428571429} )
)
)
)
);
고맙습니다!
스크립팅Re: GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?@ian_jmp 내 목표는 고정된 메시지 없이 울타리에 액세스하는 것입니다.
예, << Get Quantile은 q50 +/- 1.5*(q75-q25) 범위 내에서 울타리 값, 최대 및 최소 데이터 값을 계산하는 데 도움이 됩니다. 따라서 계산이 어렵지 않습니다. 액세스할 수 있는 방법이 있는지 궁금했습니다.
@SDF1 , 아직 15.1로 업그레이드하지 않았으며 디스패치의 간헐적 동작이 작동하거나 무시되는 것을 보았습니다. 스크립트로 작동하면 작동하지 않습니다. 새 세션을 열면 작동합니다.동일한 동작이 지속되는지 확인하려면 15.1로 업그레이드해야 합니다. 제 추측으로는 이상하게 보이는 ID 번호가 문제입니다.
@nascif_jmp , <
누군가 이 게시물을 팔로우하는 경우를 대비하여 JSL로 boxplot 펜스를 가져오는 하나의 방법으로 스크립트를 첨부했습니다(분위수를 가져오는 여러 방법 등).
Names Default to Here(1);
dt = Open("$Sample_Data/Analgesics.jmp");
boxNodes = dt << Summary(
Group( :drug ),
Quantiles( 25, :pain ),
Median( :pain ),
Quantiles( 75, :pain ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" )
);
bmin = boxNodes << New Column("Lower Fence", numeric, continuous);
bmax = boxNodes << New Column("Upper Fence", numeric, continuous);
bq25 = column(boxNodes, "Quantiles25");
bq75 = column(boxNodes, "Quantiles75");
bq50 = column(boxNodes, "Median");
bidx = Column(boxNodes, "drug");
For(i=1, i<=nrow(boxNodes), i++,
ll = bq50[i] - 1.5*(bq75[i] - bq25[i]);
ul = bq50[i] + 1.5*(bq75[i] - bq25[i]);
idx = dt << get rows where( :drug == bidx[i] & ll <= :pain <= ul );
bmin[i] = min(dt:pain[idx]);
bmax[i] = max(dt:pain[idx]);
);
아래와 같은 테이블이 생성됩니다. 참고 데이터 테이블 진통제, 열 "고통"은 소수점 이하 2자리 표시 형식을 가집니다. 울타리 값은 테이블에 저장된 값입니다.

Re: GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?@gzmorgan0 말했다 ' BoxPlotSeg 울타리'에 액세스하는 데 관심이 있습니다. 'GetLocalContext'에 대해 몰랐지만 실제로 존재하는 주석에 의존하는 것 같습니다. 그러나 둘 다 행렬을 반환하는 'GetMoments' 및 'GetQuantiles'가 도움이 될 수 있습니다.
Re: GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?안녕 @nascif_jmp ,
예, 다른 이유로도 15.1로 업그레이드해야 합니다. 현재 버전은 공유 네트워크 드라이브의 디렉터리에 있는 모든 파일을 인식하지 못합니다. 때로는 실제로 존재하는 수백 개의 파일 중 1개 또는 2개 또는 6개의 파일을 봅니다. 분명히 OneDrive에서도 알려진 문제입니다. 나는 15.1이 그것을 고친다는 말을 들었다.
IT 부서에서 출시할 때까지 잠시 기다려 왔지만 전 세계 수백 명의 사용자가 JMP를 사용하고 있기 때문에 시간이 조금 걸릴 수 있다고 생각합니다.
감사!,
DS
Re: GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?안녕 @SDF1 ,
로컬 컨텍스트 가져오기 15.1에 도입되었습니다. 복사 작동하면 전체 텍스트를 가져와 구문 분석할 수 있지만 이상적이지 않다는 것을 알고 있습니다(이것이 내가 추가한 이유입니다. 로컬 컨텍스트 가져오기 나중에).
주석도 표시되지 않는 문제를 보았습니다. 다행히 15.1에서 예상대로 작동합니다.
JMP 설치를 업그레이드해야 하는 두 가지 이유를 알려 드렸습니다! 
Re: GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?안녕 @nascif_jmp ,
(Win 10 Enterprise, 64비트, JMP Pro 15.0.0)
나는 이것이 정말 훌륭한 질문이라고 생각했고, 다른 일을 시도했지만 잘 되지 않았습니다. 스크립트를 실행하고 스크립트를 스크립팅 창에 저장한 다음 스크립팅 창에서 관련 정보를 검색해 보았습니다. 그것은 꽤 어려운 것으로 판명되었습니다.
아무튼 답변 감사합니다. 당신이 준 스크립트를 실행하려고 시도했는데 두 가지 이상한 일이 발생합니다.
- 스크립트를 있는 그대로 실행하려고 하면 코드의 "Send To Report(Dispatch(...))" 섹션이 실제로 그래프에 Pin Annotation을 추가하지 않습니다. 수동으로 돌아가서 해야 합니다.
- 위의 작업을 수행한 후 hlec = gpin << Get Local Context(); JMP는 로그에 다음 오류를 표시합니다. 'gpin' 개체가 '로컬 컨텍스트 가져오기' 메시지를 인식하지 못합니다. 아마도 당신은 다음 중 하나를 의미합니다: <<텍스트 바꾸기... <<텍스트 추가... <<텍스트 색상 <<텍스트 되돌리기 <<태그 라인 <<그래프렛 실행 <<링크 가져오기. 그리고 hlec에 대해 null을 반환합니다.
그 중 하나가 올바르게 작동하지 않는 이유가 무엇입니까?
내 버전의 JMP는 스크립팅 인덱스에서 검색할 때 Get Local Context 명령을 인식하지 못합니다. 아마도 이것이 #2가 작동하지 않는 이유일 것입니다.
감사!,
DS
Re: GraphBuilder BoxPlotSeg 레이블에 액세스하기 위한 JSL 메시지가 있습니까?안녕하세요, @gzmorgan0 ,
예, 가능합니다. 이러한 주석 메시지 중 일부는 테스트 프레임워크를 지원하기 위해 매우 최근에 추가되었습니다. 제대로 문서화되지 않은 경우 사과드립니다. 나는 그것에 대해 확실히 조사할 것입니다.
아래 스크립트를 참조하십시오. 주석(이 경우 고정된 호버 레이블) 콘텐츠를 단일 텍스트 단락(사용 복사 ) 및 연관 배열 형태의 데이터(사용 로컬 컨텍스트 가져오기).보시다시피, 호버 레이블 컨텍스트 데이터에는 보이는 호버 레이블 항목 이상이 포함되며 Graphlet 사전 설정에서 많이 사용됩니다. 저는 고급 사용자가 이 기능을 활용하여 정말 흥미로운 대화형 JMP 응용 프로그램을 만들 수 있을 것이라고 믿습니다. 사용 가능한 데이터 유형에 대한 자세한 내용은 다음을 확인하세요.
https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/work-with-the-hover-label-execution-context.shtml
Names Default to Here(1);
dt = Open( "$Sample_Data/Analgesics.jmp" );
gb = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :drug ), Y( :pain ) ),
Elements( Points( X, Y, Legend( 5 ) ), Box Plot( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
Add Pin Annotation(
Seg( Box Plot Seg( 2 ) ),
Index( {1, 1} ),
Index Row( {1, 1} ),
UniqueID( 568563361 ),
FoundPt( {321, 356} ),
Origin( {1.14256198347107, 3.97321428571429} )
)
)
)
);
frame = (gb << Report)[FrameBox(1)];
gpin = frame << Get Annotation();
pinText = gpin << Copy();
Show(pinText);
hlec = gpin << Get Local Context();
Show(hlec);
결과 기록:
pinText = "
Maximum, excluding outliers: 16.636
75%: 12.93
50%: 9.418
25%: 7.84
Minimum, excluding outliers: 3.838
drug: B
N: 7";
hlec = ["_25%" => 7.84, <BR />"_50%" => 9.418, <BR />"_75%" => 12.93, <BR />"_dataTable" => Data Table( "Analgesics" ), <BR />"_displaySegName" => "BoxPlotSeg", <BR />"_drillDepth" => 1, <BR />"_drug" => "B", <BR />"_filters" => {:pain, :drug}, <BR />"_firstRow" => -1, <BR />"_groupings" => {:pain, :drug}, <BR />"_Maximum, excluding outliers" => 16.636, <BR />"_measurements" => {}, <BR />"_Minimum, excluding outliers" => 3.838, <BR />"_mode" => "Test", <BR />"_N" => 7, <BR />"_pain" => {7.84, 12.93}, <BR />"_summaryStatistic" => "", <BR />"_underlyingRows" => 7, <BR />"_where" => ":pain >= 7.84 & :pain < 12.93 & :drug == \!"B\!"", <BR />"_whereExpr" => Expr(
:pain >= 7.84 & :pain < 12.93 & :drug == "B"
)];