SendToReport(Dispatch(...)) 명령에서 변수 사용<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />모두들 안녕,
체크박스와 드롭다운 메뉴가 있는 창을 생성하는 JMP 스크립트를 작성 중입니다. 이 메뉴는 보고서를 실행하고 그래프를 생성하는 데 사용할 수 있는 조건을 선택하는 데 사용됩니다. 제가 만들고 있는 그래프 중 하나는 선택된 확인란 수에 따라 줄 수가 다릅니다. 어떤 확인란을 선택했는지에 관계없이 모든 선이 포함된 그래프를 성공적으로 생성할 수 있었습니다. 내가 겪고 있는 문제는 전설에 관한 것입니다. 첫 번째 데이터 세트는 항상 범례와 선에 포인트가 표시됩니다. 해당 그래프의 나머지 모든 데이터 세트는 범례에 온라인으로 표시된 선을 가지고 있습니다. 이 문제를 해결하려면 일반적으로 범례를 두 번 클릭하고 범례에서 표시하고 싶지 않은 지점을 수동으로 선택 취소한 다음 스크립트를 복사하여 이 문제가 자동으로 발생하도록 합니다. 그래프에 4개의 데이터 세트가 있는 경우 범례 상자를 변경하면 스크립트는 다음과 같이 표시됩니다.
SendTo보고(
보내다(
{},
"400",
레전드박스,
{위치( {-1, -3, -3, -3, 0, 1, 2, 3} )}
)
... //(다른 Dispatch() 명령)
)
축 레이블 이름 변경과 같은 그래프로 이동하는 다른 명령이 있으므로 이는 SendToReport() 명령 내의 다른 Dispatch() 명령 사이에 나타납니다. 내가 겪고 있는 문제는 선택한 확인란 수에 따라 Postion() 명령 내부의 목록을 변경할 수 없다는 것입니다. 올바른 목록을 하드 코딩할 수 있지만 코드는 선택한 확인란 수만큼만 작동합니다. 예를 들어 목록을 {-1, -3, -3, 0, 1, 2}로 설정하면 3개의 확인란을 선택한 경우에만 코드가 올바르게 작동합니다. 선택한 확인란 수에 따라 올바른 목록으로 변경되는 변수를 만들었고 올바르게 할당되었는지 확인했지만 변수를 Position() 함수 안에 넣으면 코드가 원하는 대로 변경되지 않습니다. 에게. 아래 코드는 클릭한 확인란 수에 따라 변수 PL에 올바른 목록을 할당합니다(SUM() 함수 내부의 변수는 확인란의 출력을 나타냄).
PL = 만약(
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 1, {-1, 0 },
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 2, {-1, -3, 0, 1},
합(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 3, {-1, -3, -3, 0, 1, 2},
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 4, {-1, -3, -3, -3, 0, 1, 2, 3},
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 5, {-1, -3, -3, -3, -3, 0, 1, 2, 3, 4},
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 6, {-1, -3, -3, -3, -3, -3, 0, 1, 2, 3, 4 , 5},
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 7, {-1, -3, -3, -3, -3, -3, -3, 0, 1, 2, 3, 4, 5, 6},
합계(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 8, {-1, -3, -3, -3, -3, -3, -3, -3, 0, 1 , 2, 3, 4, 5, 6, 7},
);
이 코드가 변수에 올바른 목록을 할당하고 있음을 확인했습니다. 다음과 같이 변수를 연결하면 원하는 대로 범례 상자에서 포인트 레이블이 제거되지 않고 Dispatch() 명령을 생성한 그래프의 스크립트를 범례 상자에 복사할 때 누락됩니다. .
보내다(
{},
"400",
레전드박스,
{포지션( PL )}
)
이전에도 비슷한 방식으로 변수를 사용한 적이 있지만 전체 목록(예: PL[1])을 삽입하려고 시도하기보다는 항상 목록에서 하나의 숫자를 참조합니다. 나는 이것의 많은 변형을 시도했지만 지금까지 아무것도 작동하지 않았습니다(PL[], {PL}, {PL[]}).
내가 뭘 잘못하고 있는지 알아낼 수 있도록 도와주세요. 불분명한 점이 있으면 알려주시기 바랍니다. 질문에 답변하는 데 필요한 추가 세부정보를 제공할 수 있습니다. 이것은 큰 계획에서 아주 사소한 문제이지만 그것은 나를 미치게 만들고 해결책을 찾지 못한 채 이 문제를 넘어가는 데 어려움을 겪고 있습니다. 돕다!
Re: SendToReport(Dispatch(...)) 명령에서 변수 사용당신은 매우 환영합니다!
Re: SendToReport(Dispatch(...)) 명령에서 변수 사용답장을 보내주셔서 감사합니다. msTBD가 나올 때까지 무슨 일이 일어나고 있는지 이해했습니다. 이것은 어떤 체크박스를 선택하느냐에 따라 달라지는 변수인 것 같은데, 체크박스의 개수가 어디에서 작용하는지 알 수 없습니다.
Re: SendToReport(Dispatch(...)) 명령에서 변수 사용안녕 필립,
이 솔루션은 저에게 효과적이었습니다! 도와주셔서 정말 감사합니다!!
Re: SendToReport(Dispatch(...)) 명령에서 변수 사용 제바크리21
Ian의 제안에 추가로. 또 다른 접근 방식이 있습니다.
먼저 IF 문이 있는 경우에는 대신 Choose()를 사용하겠습니다. 조건의 인수는 1에서 시작하는 정수 시퀀스이므로 등호 절( expr==1, expr==2, expr==3)이 내장되어 있습니다. (자세한 내용은 JSL 구문 참조를 참조하세요.)
그렇다면 이것은 새로운 조건문이 될 것입니다.
PL = 선택하다 ( 합집합 (IW27, II09, II44, II08, II42, IW29, CC23, IW24),
{- 1 , 0 }, // 1
{- 1 , - 삼 , 0 , 1 }, // 2
{- 1 , - 삼 , - 삼 , 0 , 1 , 2 }, // 삼
{- 1 , - 삼 , - 삼 , - 삼 , 0 , 1 , 2 , 삼 }, // 4
{- 1 , - 삼 , - 삼 , - 삼 , - 삼 , 0 , 1 , 2 , 삼 , 4 }, // 5
{- 1 , - 삼 , - 삼 , - 삼 , - 삼 , - 삼 , 0 , 1 , 2 , 삼 , 4 , 5 }, // 6
{- 1 , - 삼 , - 삼 , - 삼 , - 삼 , - 삼 , - 삼 , 0 , 1 , 2 , 삼 , 4 , 5 , 6 }, // 7
{- 1 , - 삼 , - 삼 , - 삼 , - 삼 , - 삼 , - 삼 , - 삼 , 0 , 1 , 2 , 삼 , 4 , 5 , 6 , 7 }, // 8
) ;
다른 JSL 문 내에서 PL을 사용하려면 Dispatch()를 사용하려는 것처럼 매개 변수 변수를 Expr() 내에 래핑해야 합니다. 그래서,
보내다(
{},
"400",
레전드박스,
{위치( 만료 ( PL) )}
)
이를 통해 PL의 내용을 평가(또는 확장)할 수 있습니다. ~ 전에 모든 것이 평가됩니다. 이것이 작동하려면 전체 차트 기능을 Eval( Eval Expr ())로 래핑해야 합니다. 전체 예는 다음과 같습니다.
dt = 열려 있는 ( "$SAMPLE_DATA/호주 관광청.JMP" );
PL = { 0 , - 1 , 1 , - 1 , 2 , - 1 };
//PL = {-1, 0, -1, 1, -1, 2};
평가 (
평가 지수 (
dt << 그래프 빌더 (
제어판 표시( 0 ),
변수(
X( :날짜 ),
와( : 이름 ( "수익($'000)" ) ),
와( : 이름 ( "침대 점유율(%)" ) ),
와( : 이름 ( "평균 체류 기간(일)" ) )
),
요소( 위치( 1 , 1 ), 점( X, Y, 범례( 4 ) ), 더 매끄럽게( X, Y, 범례( 삼 ) ) ),
요소( 위치( 1 , 2 ), 점( X, Y, 범례( 1 ) ), 더 매끄럽게( X, Y, 범례( 2 ) ) ),
요소( 위치( 1 , 삼 ), 점( X, Y, 범례( 6 ) ), 더 매끄럽게( X, Y, 범례( 5 ) ) ),
SendTo보고(
보내다( {}, "그래프 제목" , TextEditBox, {텍스트 설정( "관광 동향" )} ),
보내다( {}, "400" , LegendBox, {위치( 만료 ( PL ) )} )
)
)
)
);
도움이 되었기를 바랍니다!
Re: SendToReport(Dispatch(...)) 명령에서 변수 사용(스크립팅 인덱스의 더 간단한 예를 적용하면) 아마도 이런 종류의 접근 방식(또는 약간의 변형)을 사용해야 할 것입니다.
이름의 기본값은 여기에 있습니다. ( 1 ) ;
//이 메시지는 모든 표시 상자 객체에 적용됩니다.
열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
비브 = 이변수 ( 와이 ( : 무게 ) , 엑스 ( : 키 ) ) ;
rbiv = 비브 << 보고서 ;
ms = 5 ;
마커 추가 = 만료 ( rbiv << 보내다 ( {} , "비바르 플롯" , 프레임박스 , { 마커 크기 ( msTBD )} ) ) ;
대체하다 ( 마커 추가 , 만료 ( msTBD ) , ms ) ;
마커 추가 ;