여러 이변량 플롯에 명령 보내기LineUpBox를 사용하여 각 플롯을 포함하는 단일 창 내에서 일련의 이변량 플롯을 생성하는 스크립트가 있습니다.플롯이 생성된 후 사용자가 플롯의 포인트를 켜거나 끌 수 있는 옵션을 원합니다(다른 옵션을 추가하려고 합니다...이는 하나의 예일 뿐입니다).사용자가 클릭할 수 있는 창의 버튼 상자 또는 확인란을 상상하고 모든 플롯에 이 작업이 반영됩니다.
단일 플롯의 경우 다음 명령을 사용합니다.
bvp << Show Points(0/1);
여기서 bvp는 이변량 플롯에 대한 참조입니다.그러나 여기에는 여러 플롯이 있으며 모든 플롯에 대해 단일 참조를 사용할 수 없습니다.대신 플롯이 포함된 내 LineUpBox를 참조하려고 했습니다.
For(plid = 1, plid <= nplots, plid++,
LUB_plots[plid] << Show Points(pts)
)
여기서 LUB_plots는 내 라인업 상자에 대한 참조입니다.예를 들어 이 루프는 사용자가 확인란을 선택할 때마다 실행됩니다.이렇게 하면 다음과 같은 오류가 발생합니다.
The display box 'OutlineBox' does not recognize the message 'Show Points'; perhaps you mean one of these: <<Show Properties <<Show HelpKeys <<SetHorizontal <<Horizontal <<SetOpen <<GetHorizontal <<Close Where No Outlines <<Font <<Set Font <<Set Font Style <<Set Font Size <<Reshow <<Set Report Title <<Set Window Title <<Top Parent <<Show Tree Structure <<Restore Window Size <<Set Window Size <<Set Content Size <<Get Window Position <<Show Window <<Get Show Window <<Set Window Title <<Set Window Icon <<Set Print Headers <<Set Print Footers <<Scroll Window <<Set Width <<Set Height <<Horizontal Alignment.
각 플롯에 대한 다음 인스턴스:
(The following message might not be an actual error; the preference 'Report Invalid Display Box Messages' is ON.) The display box 'OutlineBox' does not recognize the message 'Show Points'.
트리 구조를 확인하고 예, 상단 표시 상자가 실제로 개요 상자임을 확인했습니다.그래서 적어도 나는 LineUpBox[plid]가 내가 예상한 곳을 겨냥하고 있다는 것을 압니다.문제는 내 <
내 질문: 여러 이변량 플롯을 어떻게 참조할 수 있습니까?또는 생성된 후 여러 이변량 플롯에 명령을 보내는 더 좋은 방법이 있습니까?일종의 Dispatch/SendtoReports 명령 구조를 사용하고 계십니까?
커뮤니티에서 이 항목을 검색하는 방법조차 확실하지 않습니다.도움을 주시면 감사하겠습니다.
Re: 여러 이변량 플롯에 명령 보내기다시 한번 감사드립니다.우아한.
Re: 여러 이변량 플롯에 명령 보내기이 구문은 작동하는 것 같습니다.
y_axes = (lub << xpath("//AxisBox[@charID='2']"));
y_axes << scale(Log);
xpath 설명서는 예를 참조하십시오. XPath에 대한 w3schools 자습서
Re: 여러 이변량 플롯에 명령 보내기감사해요!xpath cmd는 내 쇼 포인트 예제에 적합합니다.
이제 후속 조치가 있습니다.y축을 선형에서 로그로 변경하는 명령을 모든 플롯에 어떻게 보낼 수 있습니까?처음에는 모든 y축 상자에 대한 모든 참조 목록을 만들기 위해 xpath 명령을 사용해 보았습니다.먼저 xpath 명령이 올바른 참조를 가져오는지 확인하려고 합니다.그러나 나는 그것이 그 상자 만 반환하도록 할 수없는 것 같습니다.로그의 xml 코드를 검사하여 y축 상자에 모두 "charID=\!"2\!""가 있는 것을 볼 수 있었으므로 이를 사용하여 y와 x를 구분하려고 합니다. 운.
Names Default To Here(1);
//Example report
Open("$SAMPLE_DATA/Big Class.jmp");
Try(Window("example") << Close Window);
nw = New Window("example",
lub = Lineup Box(
Bivariate(Y(:weight), X(:height), FitLine()),
Bivariate(Y(:weight), X(:age), FitLine()),
Bivariate(Y(:age), X(:age), FitLine()),
Bivariate(Y(:weight), X(:weight), FitLine())
)
);
Show(lub << Get xml);
Show(lub << xpath("//AxisBox")); //list of 8 displayboxes
Show(lub << xpath("//AxisBox[2]")); //empty list
Show(lub << xpath("//AxisBox['2']")); //list of 8 displayboxes
Show(lub << xpath("//AxisBox[\!"2\!"]")); //list of 8 displayboxes
Show(lub << xpath("//AxisBox[charID=\!"2\!"]")); //empty list
Show(lub << xpath("//AxisBox[\!"charID=2\!"]")); //list of 8 displayboxesxpath가 4y 축 상자만 반환하도록 하려면 어떻게 해야 합니까?
원하는 특정 축 상자에 대한 참조 생성에 성공하면 이전 예제와 같이 "Get Scriptable Object" 명령을 보내야 합니까, 아니면 참조 목록에 직접 "Scale" 명령을 보내면 됩니까?
JMP Summit 프레젠테이션과 귀하가 제공한 .jsl 코드 예제를 읽었는데...매우 도움이 되었습니다.그러나 추가 설명서는 Scripting Index에 드물고 Scripting Guide에는 없는 것으로 보입니다.xpath에서 사용할 수 있는 더 많은 문서가 있습니까?입력 형식이 무엇인지 알고 싶습니다.예를 들어, 처음에 "//"는 무엇을 합니까?필요한 디스플레이 상자를 가져오려면 입력의 나머지 부분을 어떻게 포맷해야 합니까?
감사해요.
Re: 여러 이변량 플롯에 명령 보내기또는 훨씬 간단합니다. xpath , 방금 게시된 JMP Summit 프레젠테이션에서 영감을 받음 여기 :
Names Default To Here(1);
//Example report
Open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("example",
lub = Lineup Box(
Bivariate(Y(:weight), X(:height), FitLine()),
Bivariate(Y(:weight), X(:age), FitLine()),
Bivariate(Y(:age), X(:age), FitLine()),
Bivariate(Y(:weight), X(:weight), FitLine())
)
);
//Make list of plots
L = (lub << xpath("//LineUpBox/OutlineBox")) << get scriptable object;
// Send messages to all plots, e.g
L << show points(0);
Re: 여러 이변량 플롯에 명령 보내기그만큼 포인트 표시() 에게 메시지를 보내야 합니다. 이변량 상단 표시 상자가 아닌 개체. 기존 표시 트리에서 연관된 객체에 대한 참조는 다음을 통해 얻을 수 있습니다. <<스크립트 가능한 개체 가져오기 .
여러 플롯에 메시지를 보내는 한 가지 방법을 보여주는 예:
Names Default To Here(1);
//Example report
Open("$SAMPLE_DATA/Big Class.jmp");
New Window("example",
lub = Lineup Box(
Bivariate(Y(:weight), X(:height), FitLine()),
Bivariate(Y(:weight), X(:age), FitLine()),
Bivariate(Y(:age), X(:age), FitLine()),
Bivariate(Y(:weight), X(:weight), FitLine())
)
);
//Make list of plots (here top-level Outline boxes)
L = {};
i = 1;
While(Is Scriptable(Try(lub[Outline Box(i)])),
If((lub[Outline Box(i)] << parent) << classname == "LineUpBox",
Insert Into(L, lub[Outline Box(i)] << get scriptable object)
);
i++;
);
// Send messages to all plots, e.g
L << show points(0);