색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법JMP 커뮤니티 여러분,
(W10 Enterprise 64비트, JMP Pro 15.0)
여러 비트의 정보를 포함하는 다소 복잡한 그래프를 생성하기 위해 그래프 빌더를 사용하는 사용자가 있습니다. 시장 데이터는 지역, 고객 등으로 분할됩니다. 결과적으로 산점도는 여러 마커를 가질 뿐만 아니라 색상으로 구분됩니다. 예를 들어, 아래는 그래프의 모양과 비슷합니다(Big Class Families.jmp 사용).

내가하고 싶은 것은 그의 원래 그래프 빌더 플롯을 가져 와서 범례에서 마커 스타일과 색상을 추출하고 dt 속성으로 설정하는 것입니다. 목적은 사용자가 데이터의 마커와 색상을 수정하는 도구 모음의 핫 버튼으로 약간의 JSL 코드를 실행할 수 있도록 하는 것입니다. 이것이 필요한 이유는 그래프 빌더 내에서 사용자가 데이터 필터를 사용하여 지역을 변경할 때마다 각 지역 내에서 고객 수가 변경되기 때문에 고객 집합에 대한 색상 코딩 및 마커가 변경되기 때문입니다. 예를 들어 데이터 열의 고정 속성으로 이것을 갖고 싶어합니다.
트리 구조 내의 LegendBox(1)에서 정보를 가져오기 위해 이와 같은 약간의 JSL 코드를 시도했지만 다음 행의 결과로 null이 표시됩니다. test = legend<
Names Default to here(1);
dt = Open("$Sample_Data/Big Class Families.jmp");
gb=dt<<GRAPH builder=""></GRAPH><BR />test = legend<<GET property=""></GET>색상 정보가 RGB 또는 무엇이든 괜찮습니다. "파란색" 또는 "빨간색"과 같은 이름일 필요는 없습니다.
진행 방법에 대한 제안을 보내주시면 감사하겠습니다.
감사,
DS
Re: 색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법안녕 @MJE ,
추가 피드백 감사합니다. 효과가있다! 해결책을 주셔서 감사합니다. 그렇게 표시하겠습니다. 사용자가 요구하는 것과 유사하도록 약간 수정했지만 그렇지 않으면 작업을 수행합니다. 내가 알 수 있는 바에 따르면 마커 및 색상 목록은 범례와 같은 순서입니다.
내가 사용한 코드의 수정된 버전은 다음과 같습니다.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :age ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
segs = Report(gb)[Framebox(1)]<<FIND segs=""></FIND>
그리고 내가 얻는 출력 :
MarkerList = {"원", "더하기", "다이아몬드", "X", "삼각형", "Y"};
색상 목록 = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

감사!,
DS
Re: 색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법이 부분이 도움이 될 수도 있습니다. 최소한 그래프의 실제 데이터 포인트에 어떤 색상과 마커가 있는지 정보를 제공합니다. 불행히도 데이터 포인트(특히 마커 세그먼트)를 실제 행 번호와 직접 연관시키는 방법을 찾지 못했습니다. 아마도 다른 사람이 그것을하는 방법에 대한 아이디어가있을 것입니다 ...
이 마커 세그먼트 내에서 사용된 마커 목록을 제공하기 위해 "get marker" 메시지를 "get markers"로 대체할 수 있습니다. 그러나 이 상태에서는 모두 동일하므로 가독성을 위해 짧게 줄였습니다.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height)
);
//gb << show tree structure;//only for debugging and building the script
segs = Report( gb )[Framebox( 1 )] << Find Segs;
For ( i = 1, i <= n items (segs), i++,
seg = Report( gb )[Framebox( 1 )] << Find Seg( MarkerSeg(i) );
nx = seg << get x values;
ny = seg << get y values;
m = seg << get marker;
c = seg << get colors;
show (nx, ny, m, c);
);
도움이 되었기를 바랍니다.
브
말테
Re: 색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법안녕 @MJE ,
피드백을 주셔서 감사합니다. 불행히도, 그것은 내가 하는 데 관심이 있는 것이 아닙니다. 사용자는 실제로 행 상태나 마커를 변경하지 않고 그래프 빌더가 자동으로 변경하도록 합니다. 그러나 변경할 때마다 JMP의 기본값에 따라 색상과 마커가 변경됩니다. 그래프 빌더가 자동으로 수행하는 마커 및 색상 "설정"을 추출한 다음 이를 dt에 적용하여 그래프 빌더가 변경될 때 수정되고 업데이트되지 않도록 하고 싶습니다. 사용자의 편의를 위해 이 작업을 자동으로 수행하고 싶습니다.
MarkerSeg 및 <<
나는 지금 그것에 대해 약간의 독서를 하고 있으며 아래 수정된 코드를 사용하여 스크립팅 색인의 예제를 수정하려고 합니다.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class Families.jmp" );
gb = dt << Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Graph Spacing( 5 ),
Variables( X( :weight ), Y( :height ), Overlay( :age ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 33 ) ) ),
MarkerSeg(:weight, :height, Row States(dt))
);
gb << show tree structure;//only for debugging and building the script
lgnd = (gb << Report)[FrameBox(1)];
markerseg = (lgnd<<FIND seg=""></FIND>
그러나 실행할 때 markerseg에 대해 {"Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot", "Dot"} 출력을 얻습니다.
원본 게시물에 포함된 그래픽에서 각 데이터 포인트는 "점"이 아닙니다.
감사!,
DS
Re: 색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법안녕 @SDF1 ,
문제를 올바르게 이해했다면 행 상태를 확인하는 것이 좋습니다.
<< copy from row states
그리고
<< copy to row states
행 상태 정보(예: 색상, 마커 등)를 별도의 열로 전송하고 다시 행 상태로 전송할 수 있습니다(예제 및 구문은 스크립팅 인덱스에서 찾을 수 있음).
브
말테