안녕. graphbuilder에서 축에 대해 표시된 값을 읽고 이를 목록으로 반환하는 스크립팅 방법이 있다는 것을 알고 싶습니다. IOW, graphbuilder 참조 또는 축 상자에서 축 값을 "가져올" 수 있는 함수나 메시지가 있습니까? 다음과 같습니다: xval_lis = gb << X 축 값을 가져옵니다.
예를 들어 다음과 같은 그래프가 있다고 가정해 보겠습니다.

dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Size(513, 406),
Show Control Panel(0),
Back Color("White"),
Variables(X(:age), X(:sex, Position(1)), Y(:weight)),
Elements(Points(X(1), Y, Legend(1)), Smoother(X(1), Y, Legend(2))),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14}),
Display(:age, Size(170, 96), List Display)
)
),
SendToReport(Dispatch({}, "", AxisBox, {Select}))
)여기서는 사용자가 로컬 데이터 필터를 이용하여 특정 연령을 제외했기 때문에 표의 모든 연령이 x축에 표시되지는 않습니다. 이 경우 실제로 그래프에 표시되는 연령을 읽는 방법을 원합니다. 이 질문은 명목형 또는 순서형 변수가 축에 사용되는 경우에만 적용됩니다(연속형 변수 없음).
다음 스크립팅 방법을 고려했습니다.
1. 로컬 데이터 필터 읽기
2. 필터링되지 않은 행만으로 구성된 하위 집합 테이블 만들기
3. 해당 테이블의 요약 기능을 사용하여 표시된 축 값 목록을 가져옵니다.
ldf_str = ldf << Get Where Clause; //ldf = reference to local data filter in gb window
clause = Parse(Regex(ldf_str, "Select Where\((.+)\)$", "\1"));
r = dt << Get Rows Where(Eval(clause)); //dt = ref to main datable
dtsub = dt << Subset(//Invisible,
Selected Rows(0),
Rows(r),
Selected columns only(0)
);
Summarize(dtsub, xlev_lis = By(:age, :sex));
하지만 이 방법은 다루기 힘든 것 같습니다. graphbuilder 참조 또는 축 상자에서 축 값을 "가져올" 수 있는 명령이 있습니까?
@nikles,
사용자 시나리오는 확실하지 않지만 사용자가 적극적으로 필터링하는 경우 GraphBuilder 구조, 다른 역할 등을 변경할 수도 있습니다. 따라서 필터 변경 핸들러가 더 강력할 것입니다. 또한 Where 절()은 역행렬을 캡처하지 않습니다. Where의 스크립트와 TextBox는 반전을 Not(!)로 캡처합니다.

아래 첨부된 스크립트는 Xticks를 가져와서 필터가 변경될 때 로그에 인쇄하는 스크립트입니다. 다음은 주석(//)과 추가 줄 바꿈이 포함된 포함된 로그의 스크린샷입니다.

Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = Graph Builder(
Size(513, 406),
Show Control Panel(0),
Back Color("White"),
Variables(X(:age), X(:sex, Position(1)), Y(:weight)),
Elements(Points(X(1), Y, Legend(1)), Smoother(X(1), Y, Legend(2))),
Local Data Filter(
Add Filter(
columns(:age),
Where(:age == {12, 13, 14}),
Display(:age, Size(170, 96), List Display)
)
),
SendToReport(Dispatch({}, "", AxisBox, {Select}))
);
//iftb = (report(gb)[PictureBox(1)]<<SIB></SIB>
<P>노트:</P>
<UL>
<LI>20행이 주석 처리되었습니다. Where TextBox에 대한 핸들을 얻는 방법을 보여줍니다.</LI>
<LI>필터 변경 핸들러에 사용되는 함수 f의 주요 기능은 연관 배열의 JMP 구현 기능입니다. 이를 정의하는 여러 방법; 목록에서 고유한 값을 얻으려면 거의 모든 JMP 객체를 키로 사용할 수 있습니다.</LI>
<LI>다른 주요 기능은 다음과 같습니다. dt[ zz, _xvar_]는 행 값 목록이고 ldf <<는 필터링된 행을 가져옵니다.</LI>
</UL>
<P> </P>
<P> </P>
<P> </P>
<P> </P>