JSL - 열린 그래프 X 및 Y 값 가져오기안녕하세요
열려 있는 데이터 테이블을 콤보 상자에서 선택할 수 있는 스크립트가 있습니다.

아래에 그래프가 있는 데이터 테이블이 있는 경우
이 그래프를 어떻게 선택할 수 있나요?
그 이유는 X 및 Y 열 이름을 얻고 싶기 때문입니다.
예를 들어 위 그림에 표시된 첫 번째 그래프에서 나는 test와 test2를 얻고 싶습니다.

이 그래프는 이미 JMP에 열려 있으며 이를 제어할 수 없습니다(그래프를 생성하는 스크립트 편집 측면에서).
데이터 접근대량 맞춤화Re: JSL - 열린 그래프 X 및 Y 값 가져오기다음은 플랫폼(이 경우 Graph Builder)에서 작성된 JSL을 사용하여 요소를 찾는 접근 방식입니다. 다음을 설명하기 위해 이를 포함합니다.
- 특급 ( )
- 이름 expr ( )
- 인수( )
- 머리 ( )
- << 스크립트 가능한 개체 가져오기(이것은 스크립트를 얻는 그래프 빌더 개체를 반환합니다)
이전에 사용해 본 적이 없다면 스크립팅 가이드에서 이에 대해 읽어 보는 것이 좋습니다. 강력하지만 약간의 연습이 필요합니다.
조건을 넣지 않았으므로(그렇게 하고 싶을 것입니다... 창 이름 등을 확인하십시오.) 스크립트가 아래에 작성된 대로 작동하는지 확인하려면 다음을 수행하십시오.
1) 현재 보고서와 그래프를 닫습니다.
2) 그래프 빌더 그래프를 생성합니다.
3) 스크립트 창에서 아래 스크립트를 실행해 보세요. (이를 외부 루프로 래핑하여 둘 이상의 그래프 창을 순환할 수도 있습니다. 다시 한번 말하지만, 이는 전체적인 아이디어를 설명하기 위한 뼈대 스크립트일 뿐입니다.)
건배,
브래디
</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
winList = Get Window List( Type( "reports" ) );
obj = winlist[1][Outline Box( 1 )] << Get Scriptable Object;
script = obj << get script;
i = 1;
//move through the script's arguments until you get to the Variables ( ) argument.
While( Head( exp = Arg( Name Expr( script ), i ) ) != Expr( Variables ), i++ );
xList = ylist = {};
nexp = name expr ( exp ); //optional; this allows us to type nexp instead of name expr ( exp ) in the code below.
//cycle through the arguments in the Variables ( ) section. If X ( ) or Y ( ) is
//encountered, insert into the appropriate list.
For( i = 1, i <= N Arg( nexp ), i++,
If( Head( var = Arg( nexp, i ) ) == Expr( X ), Insert Into( xList, Arg( Name Expr( var ), 1 ) ));
If( Head( var = Arg( nexp, i ) ) == Expr( Y ), Insert Into( yList, Arg( Name Expr( var ), 1 ) ));
);
Show( xList, yList );
Re: JSL - 열린 그래프 X 및 Y 값 가져오기도와 주셔서 감사합니다
이제 XY 값(빨간색으로 표시된 값)을 얻고 싶지만 해당 값에 액세스하는 방법을 잘 모르겠습니다.
내가 할 수 있는 일은 제목(노란색으로 표시된 것)을 얻는 것뿐입니다.
"get Text" 대신 "get XML"을 사용하면 이름도 제공되지만 거기에는 많은 데이터가 있으므로 더 쉬운 방법이 있기를 바랍니다.

Re: JSL - 열린 그래프 X 및 Y 값 가져오기작성하려는 코드를 실행하기 전에 JMP 세션을 제어할 수 없다면 다음과 같은 접근 방식을 시도해 볼 수 있습니다.
NamesDefaultToHere(1);
tableOfInterest = "Big Class";
allWindows = GetWindowList();
tableWindows = {};
for (w = 1, w <= NItems(allWindows), w++,
winTitle = allWindows[w] << GetWindowTitle;
if (StartsWith(winTitle,tableOfInterest) & (allWindows[w] << WindowClassName) == "Report", InsertInto(tableWindows, allWindows[w]));
);
for (w = 1, w <= NItems(tableWindows), w++,
Print(tableWindows[w] << GetWindowTitle);
);
다양한 명령이 어떻게 작동하는지 보려면 '도움말 > 스크립팅 색인'을 사용하세요.
하위 보고서 목록이 있으면 각 보고서를 검사하여 원하는 것을 꺼낼 수 있습니다. 그러나 보고서 트리는 복잡할 수 있으므로 충분히 견고하게 만들려면 약간의 작업이 필요할 수 있습니다.