색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법친애하는 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"};
ColorList = {{66, 112, 221}, {212, 73, 88}, {61, 174, 70}, {162, 43, 221}, {204, 121, 41}, {40, 182, 143} };

감사해요!,
DS
Re: 색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법아마도 이 부분이 도움이 될 것 같습니다. 최소한 그래프의 실제 데이터 포인트에 어떤 색상과 마커가 있는지에 대한 정보를 제공합니다. 불행하게도 데이터 포인트(각 마커 세그먼트)를 실제 행 번호와 직접 연관시키는 방법을 찾을 수 없었습니다. 어쩌면 다른 사람이 그렇게 하는 방법에 대한 아이디어를 가지고 있을 수도 있습니다.
"마커 가져오기" 메시지를 "마커 가져오기"로 대체하여 이 마커 세그먼트 내에서 사용된 마커 목록을 제공할 수 있습니다. 하지만 이 상태에서는 모두 동일하므로 가독성을 높이기 위해 짧게 잘라냈습니다.
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);
);
도움이 되었기를 바랍니다.
br
말테
Re: 색상 및 마커 유형과 같은 범례 상자 정보를 얻는 방법안녕 @MJE ,
의견을 보내 주셔서 감사합니다. 불행히도 그것은 내가 관심을 갖고 있는 일이 아닙니다. 사용자가 실제로 행 상태나 마커를 변경한 것이 아니라 그래프 빌더가 자동으로 변경하도록 허용합니다. 그러나 변경이 이루어질 때마다 JMP의 기본값에 따라 색상과 마커가 변경됩니다. Graph Builder가 자동으로 수행하는 마커 및 색상 "설정"을 추출한 다음 이를 dt에 적용하여 Graph Builder가 변경될 때 수정되고 업데이트되지 않도록 하고 싶습니다. 사용자의 편의를 위해 이 작업을 자동으로 수행하고 싶습니다.
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
행 상태 정보(예: 색상, 마커 등)를 별도의 열로 전송한 후 다시 행 상태로 다시 전송할 수 있습니다(예제 및 구문은 스크립팅 인덱스에서 찾을 수 있음).
br
말테