차트에서 전역적으로 레벨을 설정하는 방법<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />나는 차트에서 생성된 몇 가지 스크립트를 사용하고 있습니다. 이러한 차트에는 JMP가 여러 수준으로 구분하는 데이터가 있는 경우가 많습니다. 하지만 제 목적상 사실상 동일하기는 합니다. 예를 들어 다음 코드는 사이트 전체의 평균 제외율에 대한 차트입니다.
차트 (
엑스 ( : IDENT 코드 ) ,
와이 ( 평균 ( : 제외율 )) ,
평균에 오차 막대 추가 ( 이름 ( "신뢰 구간(풀링)" )( 0.95 )) ,
오버레이 축 << {{ 체재 ( "12월 고정" , 12 , 삼 ) , 최소 ( 0.935 ) , 맥스 ( 0.9975 ) ,
Inc. ( 0.005 ) , 사소한 진드기 ( 1 )}} ,
오버레이 스택 축 << {{ 체재 ( "12월 고정" , 12 , 0 ) , 최소 ( - 1.5 ) , 맥스 ( 8.5 ) , Inc. ( 1 ) ,
사소한 진드기 ( 1 )}} ,
수준 [ 1 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
수준 [ 2 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
수준 [ 삼 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
수준 [ 4 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
수준 [ 5 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
수준 [ 6 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
수준 [ 7 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
와이 [ 1 ] << 포인트 차트 ( 1 ) ,
SendToReport (
보내다 ({} , "102" , 스케일박스 , { 체재 ( "퍼센트" , 6 , 0 ) , 주요 그리드 표시 ( 1 )}) ,
보내다 ({} , "" , 축박스 ( 2 ) , { 축 레이블 추가 ( "평균(제외율)" )}) ,
보내다 ({} , "평균(제외율)" , 텍스트편집 상자 , { 글꼴 크기 설정 ( 20 )}) ,
보내다 (
{} ,
"차트 그래프" ,
프레임박스 ,
{ 프레임 크기 ( 704 , 536 ) , 마커 크기 ( 6 )}
)
)
)
이전 보고서에 대한 스크립트가 생성되었을 때는 사이트가 7개였지만 지금은 10개가 있으므로 마지막 3개의 플롯은 기본 설정을 사용합니다. 레벨 수가 변경될 때 이와 같이 개별적으로 레벨을 설정하는 대신 전역적으로 레벨을 설정할 수 있는 방법이 있습니까?
Re: 차트에서 전역적으로 레벨을 설정하는 방법그래서 저는 이제 또 다른 보고 주기에 있고 작년에 이 스레드를 찾았습니다. 나는 노력했다 오후로즈 어제 님의 제안이 있었고 그것이 중단될 때까지 훌륭하게 작동했습니다. 처음으로 제시한 기술을 사용했습니다. 오후로즈 그것은 완벽하게 작동했습니다. 데이터 세트의 각 수준에 대해 올바른 색상과 마커 유형이 그래프의 각 지점에 적용되었습니다. 다른 데이터 테이블 스크립트에서 이 기술을 사용하려고 시도했지만 작동하지 못했습니다. 오류가 발생하지 않고 스크립트가 실행되었지만 스크립트에 정의한 것 대신 JMP의 기본 색상과 마커가 사용되었습니다. 흥미롭게도 이제 제가 수정한 첫 번째 스크립트도 스크립트에서 정의한 것 대신 JMP 기본값을 사용합니다.
코드는 다음과 같습니다.
Names Default To Here(1);
Delete Symbols();
dt = Current Data Table();
UniqueValueList = Function({inList},
{Default Local},
tmp = [=> 0];
Insert Into(tmp, inList);
tmp << Get Keys;
);
identCodes = :IDENT Code << Get Values;
uniqueCodes = UniqueValueList(identCodes);
nCrossings = NItems(uniqueCodes);
dt << Chart(
X(:IDENT Code),
Y(Mean(:Read Rate)),
Add Error Bars to Mean(Name("Confidence Interval (pooled)")(0.95)),
Overlay Axis << {{Format("Fixed Dec", 12, 2), Min(0.77), Max(1.05), Inc(0.02),
Minor Ticks(1)}},
Overlay Stack Axis << {{Min(-10)}},
For(i = 1, i <= nCrossings, i++,
Level[i] << {Colors(-4221340), Markers(29)}
),
Y[1] << Point Chart(1),
SendToReport(
Dispatch(
{},
"102",
ScaleBox,
{Format("Percent", 6, 0), Minor Ticks(1), Show Major Grid(1),
Show Minor Grid(0)}
),
Dispatch({}, "", AxisBox(2), {Add Axis Label("Mean(Read Rate)")}),
Dispatch({}, "Mean(Read Rate)", TextEditBox, {Set Font Size(20)}),
Dispatch(
{},
"Chart Graph",
FrameBox,
{Frame Size(1056, 464), Marker Size(6)}
)
)
)JSL 디버거에서 볼 수 있는 내용을 바탕으로, n크로싱 올바르게 설정되었지만 Chart 문의 For 루프가 무시되는 것 같습니다. 불행하게도 Chart는 단일 문이므로 코드를 단계별로 실행하는 것은 도움이 되지 않습니다. 따라서 디버거는 해당 코드를 단계별로 실행하지 않습니다.
내가 도대체 뭘 잘못하고있는 겁니까?
Re: 차트에서 전역적으로 레벨을 설정하는 방법이것이 내가 찾고 있는 것일 수도 있을 것 같습니다. 차트 코드 내에 For 루프를 넣을 수 있는지 궁금했지만 JSL에서 사용자 정의 함수를 만들 수 있거나 이 경우 필요했을 것이라는 사실을 알지 못했습니다. 나는 당신의 솔루션을 시험해 볼 것입니다.
Re: 차트에서 전역적으로 레벨을 설정하는 방법차트 코드에 바로 루프를 넣을 수 있습니다.
dt = 새 테이블 ( "예" , 행 추가 ( 8 ) ,
새 열 ( "IDENT 코드" , 성격 , "명사 같은" ,
값 설정 ( { "AA" , "AA" , "AA" , "BB" , "BB" , "CC" , "CC" , "CC" } ) ) ,
새 열 ( "제외율" , 숫자 , "마디 없는" , 체재 ( "최상의" , 12 ) ,
값 설정 ( [ 0.05 , 0.07 , 0.08 , 0.5 , 0.6 , 0.4 , 0.3 , 0.2 ] ) )
) ;
식별 코드 = dt : IDENT 코드 << 가치를 얻다 ;
고유 코드 = get_unique_values ( 식별 코드 ) ;
엔코드 = 항목 ( 고유 코드 ) ;
dt << 차트 (
엑스 ( : IDENT 코드 ) ,
와이 ( 평균 ( : 제외율 )) ,
평균에 오차 막대 추가 ( 이름 ( "신뢰 구간(풀링)" )( 0.95 )) ,
오버레이 축 << {{ 체재 ( "12월 고정" , 12 , 삼 ) , 최소 ( 0.935 ) , 맥스 ( 0.9975 ) ,
Inc. ( 0.005 ) , 사소한 진드기 ( 1 )}} ,
오버레이 스택 축 << {{ 체재 ( "12월 고정" , 12 , 0 ) , 최소 ( - 1.5 ) , 맥스 ( 8.5 ) , Inc. ( 1 ) ,
사소한 진드기 ( 1 )}} ,
// 각 레벨에 동일한 색상과 마커를 할당합니다.
~을 위한 ( 나 = 1 , 나 <= 엔코드 , 나 ++,
수준 [ 나 ] << { 그림 물감 ( - 4221340 ) , 마커 ( 29 )} ,
) ,
와이 [ 1 ] << 포인트 차트 ( 1 ) ,
SendToReport (
보내다 ({} , "102" , 스케일박스 , { 체재 ( "퍼센트" , 6 , 0 ) , 주요 그리드 표시 ( 1 )}) ,
보내다 ({} , "" , 축박스 ( 2 ) , { 축 레이블 추가 ( "평균(제외율)" )}) ,
보내다 ({} , "평균(제외율)" , 텍스트편집 상자 , { 글꼴 크기 설정 ( 20 )}) ,
보내다 (
{} ,
"차트 그래프" ,
프레임박스 ,
{ 프레임 크기 ( 704 , 536 ) , 마커 크기 ( 6 )}
)
)
)
get_unique_values 함수에 대한 코드는 다음과 같습니다.
Get_unique_values = 기능 ( { in_list } ,
{ 기본 로컬 } ,
tmp = [ => 0 ] ;
에 집어 넣다 ( tmp , in_list ) ;
tmp << 열쇠를 얻으세요 ;
) ;
Re: 차트에서 전역적으로 레벨을 설정하는 방법고마워요. 하지만 전 세계적으로 그런 뜻은 아닙니다. 저는 JMP를 고정하여 모든 차트를 같은 방식으로 생성하는 데 관심이 없습니다. 보고 기간마다 수준 수가 변경될 수 있는 진행 중인 프로젝트의 특정 데이터 세트에 대한 스크립트가 있습니다. JMP가 스크립트를 생성하는 방식, 레벨 설정이 명시적이므로 전역적으로 레벨을 설정할 수 있는 방법이 있는지 알고 싶습니다. 차트 내에서 . 46개 레벨이 있는 데이터 세트에 대한 유사한 스크립트가 있으며 각 레벨의 설정이 정확히 동일함에도 불구하고 이 스크립트는 46개의 레벨 매개변수 라인을 생성했습니다.
JMP에서는 수준이 항상 명시적이며 사용자는 항상 수준이 그래프에서 다르게 표시되기를 원한다고 가정하는 것 같습니다. 그런 경우도 있지만 이 차트에서 수준으로 간주되는 것은 x축의 범주입니다.
Re: 차트에서 전역적으로 레벨을 설정하는 방법기본 설정에서 기본값을 설정할 수 있습니다.
파일==>기본 설정==>그래프
기본 마커 및 색상 세트를 여기에서 지정할 수 있습니다.

이것이 원하는 대로 작동하지 않으면 발견된 레벨 수를 테스트하고 필요에 따라 코드를 생성하도록 스크립트를 쉽게 수정할 수 있습니다.