WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석안녕하세요 JMP 커뮤니티,
윈도우 프로 10 - JMP 17.2
2D UMAP에 투사된 데이터가 있고, Graph Builder에서 UMAP2 x UMAP1 산점도 위에 포맷된(색상 및 크기) 클러스터 ID를 자동으로 삽입하고 싶습니다. 클러스터 ID를 별도로 플로팅하고 메인 FrameBox에 병합하여 클러스터 ID를 얻었습니다. 그래도 이 방법은 만족스럽지 않습니다. 클러스터 ID 레이블의 크기와 색상을 제어할 수 없기 때문입니다.
Add Graphics Script() 명령 내에서 Loop를 사용해 보았지만 작동하지 않았습니다.

위의 플롯을 만드는 데 사용한 스크립트는 다음과 같습니다.
Names Default to Here(1);
dt = Data Table ("ANNOTATION of 2D CLUSTERS");
dt_sum = dt << Summary(
Group( :WARD UMAP CLUSTERS ),
Mean( :UMAP1 CENTER by CLUSTER ),
Mean( :UMAP2 CENTER by CLUSTER ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" )
);
gb = dt << Graph Builder(
Size( 483, 675 ),
Fit to Window( "Off" ),
Page Level Fill Color( "White" ),
Graph Spacing( 15 ),
Spacing Borders( 1 ),
Variables( X( :UMAP1 ), Y( :UMAP2 ), Color( :WARD UMAP CLUSTERS ) ),
Elements( Points( X, Y, Legend( 27 ) ) )
);
gbr = report (gb);
main_x_max = gbr [AxisBox(1)] << Get Max;
main_x_min = gbr [AxisBox(1)] << Get Min;
main_y_max = gbr [AxisBox(2)] << Get Max;
main_y_min = gbr [AxisBox(2)] << Get Min;
F_size = gbr[FrameBox(1)] << Get Size;
xbe = Expr(dt_sum << Graph Builder(
Size( _W_, _H_ ),
Fit to Window( "Off" ),
Page Level Fill Color( "White" ),
Graph Spacing( 15 ),
Spacing Borders( 1 ),
Variables(
X( :UMAP1 CENTER by CLUSTER ),
Y( :UMAP2 CENTER by CLUSTER ),
Color( :WARD UMAP CLUSTERS )
),
Elements(
Bar( X, Y, Legend( 4 ), Bar Style( "Float" ), Label( "Label by Row" ) )
)
)
);
xbx = Substitute(Name Expr (xbe), Expr (_W_), F_Size [1],
Expr (_H_), F_size [2]
);
xb = Eval (xbx);
xbr = report (xb);
xbr [AxisBox (1)] << max (main_x_max);
xbr [AxisBox (1)] << min (main_x_min);
xbr [AxisBox (2)] << max (main_y_max);
xbr [AxisBox (2)] << min (main_y_min);
xbr [FrameBox(1)] << Copy Frame Contents;
gbr [FrameBox(1)] << Paste Frame Contents;
감사합니다.
최상의,
티에스
자동화 및 스크립팅데이터 탐색 및 시각화윈도우Re: WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석"추가" x축과 y축을 추가한 다음 사용할 수 있습니다. 기본값으로 둘 수 없으므로 Mean(UMAP2)의 색상이 변경되었다는 점에 유의하세요. 그렇지 않으면 값 색상을 사용하게 됩니다. "평균" 지점을 강조 표시하거나 마커를 변경하지 않으려면 마커 크기를 0으로 변경할 수도 있습니다.

Graph Builder(
Size(438, 629),
Show Control Panel(0),
Fit to Window("Off"),
Page Level Fill Color("White"),
Graph Spacing(15),
Spacing Borders(1),
Variables(
X(:UMAP1),
X(:UMAP1 CENTER by CLUSTER, Position(1)),
Y(:UMAP2),
Y(:UMAP2 CENTER by CLUSTER, Position(1)),
Color(:WARD UMAP CLUSTERS)
),
Elements(
Points(X(1), Y(1), Legend(27)),
Points(
X(2),
Y(1),
Color(0),
Legend(32),
Summary Statistic("Mean"),
Label("Label by Row")
)
),
SendToReport(
Dispatch({}, "400", ScaleBox,
{Legend Model(
32,
Properties(0, {Line Color(16)}, Item ID("Mean(UMAP2)", 1))
)}
)
)
);
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-825409" slang="en-US" mode="CREATE">Re: WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석</LINGO-SUB><LINGO-BODY id="lingo-body-825409" slang="en-US" mode="CREATE"><P>안녕하세요 Jarmo님,</P>
<P>제 초기 과제에 훨씬 더 간단한 솔루션을 제공해 주셔서 감사합니다. 그래도 플롯을 더 읽기 쉽게 만들기 위해 레이블의 글꼴 크기와 색상을 변경하고 싶습니다. 그 작업을 어떻게 달성할 수 있을지에 대한 단서가 있나요?</P>
<P> </P>
<P>감사합니다,</P>
<P>티에스</P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-825424" slang="en-US" mode="CREATE">Re: WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석</LINGO-SUB><LINGO-BODY id="lingo-body-825424" slang="en-US" mode="CREATE"><P>그러면 라벨에는 사용자 정의 옵션이 그렇게 많지 않으므로 그래픽 스크립트를 활용해야 할 것 같습니다(텍스트 크기를 변경하려면 글꼴 기본 설정을 변경해야 함).</P></LINGO-BODY><LINGO-SUB id="lingo-sub-825436" slang="en-US" mode="CREATE">Re: WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석</LINGO-SUB><LINGO-BODY id="lingo-body-825436" slang="en-US" mode="CREATE"><P>흥미롭게도, 막대 그래프의 라벨에는 글꼴을 조정하는 명령이 있지만, 점 그래프에는 없는군요?<BR /> <A href="https://community.jmp.com/t5/JMP-Wish-List/Graph-builder-bar-chart-data-label-control/m-p/343142#U343142" class="lia-mention-container-editor-message lia-img-icon-idea-thread lia-fa-icon lia-fa-idea lia-fa-thread lia-fa" target="_blank">그래프 빌더 막대형 차트 데이터 레이블 컨트롤</A> -> 다른 플롯 유형에도 흥미로운가요?<BR /><BR /></P><P> </P><PRE><CODE class=" language-jsl">Graph Builder(
Variables( X( :WARD UMAP CLUSTERS ) ),
Elements( Bar( X, Legend( 5 ), Label( "Label by Value" ) ) )
);
labels = (current report()[FrameBox(1)] << find segs)[1];
labels << Set Font( "", 18, "", 0 )
Re: WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석안녕하세요 여러분,
또 다시, 필요 이상으로 복잡하게 만들려고 노력했습니다.
제가 만든 짧은 JSL 스크립트는 다음과 같습니다. 이 스크립트는 제가 필요한 모든 기능을 갖추고 있습니다.
Names Default to Here(1);
dt = Data Table ("ANNOTATION of 2D CLUSTERS");
Summarize (dt, clu_id = By (:WARD UMAP CLUSTERS), x_pos = Mean (:UMAP1 CENTER by CLUSTER), y_pos = Mean(:UMAP2 CENTER by CLUSTER));
clu_n = N items (clu_id);
colors = {};
vect = dt:WARD UMAP CLUSTERS << Get Property ("Value Colors");
For (j = 1, j <= clu_n, j++,
insert into(colors, num (word(-1, char(vect [j]), "=")))
);
gb = dt << Graph Builder(
Size( 483, 675 ),
Fit to Window( "Off" ),
Page Level Fill Color( "White" ),
Graph Spacing( 15 ),
Spacing Borders( 1 ),
Variables( X( :UMAP1 ), Y( :UMAP2 ), Color( :WARD UMAP CLUSTERS ) ),
Elements( Points( X, Y, Legend( 27 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
10,
Description( "" ),
Text Size (14);
For( i = 1, i <= clu_n, i++,
Label = clu_id [i];
Fill Color ("white");
Transparency (0.85);
Circle ({x_pos [i], y_pos [i]+0.25}, 0.5, "FILL");
Transparency (1);
Text Color (colors [i]);
Text( center justified, {x_pos [i], y_pos [i]}, Label );
)
)}
)
)
);
내가 만든 조잡한 방법이 값어치의 색상을 수집하는 데 효율적인지는 잘 모르겠지만, 효과는 있습니다.
최상의,
티에스
Re: WINDOWS 10 > JMP 17.2 > 그래프 빌더 > 산점도 > 동적 클러스터 주석저는 당신의 방법이 괜찮다고 생각합니다. Arg()를 사용하여 "things"의 값 색상 목록에서 항목을 가져올 수도 있습니다. 또한 변수가 손실될 때 발생하는 모든 종류의 성가신 문제를 피하기 위해 그래픽 스크립트 외부의 변수를 그래픽 스크립트 내부에서 평가할 것입니다.
저는 아마도 Associative Array를 사용하여 id, 색상, x 및 y 좌표를 수집할 것입니다. 이 경우 한 가지 문제는 Summarize와 Associative Array가 다른 순서를 가질 수 있고 이를 고려해야 한다는 것입니다(여기서는 그렇게 하지 않았습니다).
Names Default To Here(1);
dt = Data Table("ANNOTATION of 2D CLUSTERS");
Summarize(
dt,
clu_id = By(:WARD UMAP CLUSTERS),
x_pos = Mean(:UMAP1 CENTER by CLUSTER),
y_pos = Mean(:UMAP2 CENTER by CLUSTER)
);
vect = dt:WARD UMAP CLUSTERS << Get Property("Value Colors");
aa_colors = Associative Array();
For Each({item, idx}, vect,
aa_colors[Arg(item, 1)] = Associative Array();
aa_colors[Arg(item, 1)]["Color"] = Arg(item, 2);
aa_colors[Arg(item, 1)]["X"] = x_pos[idx];
aa_colors[Arg(item, 1)]["Y"] = y_pos[idx];
);
gb = dt << Graph Builder(
Size(483, 675),
Fit to Window("Off"),
Page Level Fill Color("White"),
Graph Spacing(15),
Spacing Borders(1),
Variables(X(:UMAP1), Y(:UMAP2), Color(:WARD UMAP CLUSTERS)),
Elements(Points(X, Y, Legend(27)))
);
Eval(EvalExpr(
Report(gb)[FrameBox(1)] << Add Graphics Script(
Text Size (14);
myaa = Expr(aa_colors);
ids = myaa << get keys;
For(i = 1, i <= N Items(ids), i++,
Fill Color ("white");
Transparency (0.85);
Circle({myaa[ids[i]]["X"], myaa[ids[i]]["Y"] + 0.25}, 0.5, "FILL");
Transparency(1);
Text Color(myaa[ids[i]]["Color"]);
Text(center justified, {myaa[ids[i]]["X"], myaa[ids[i]]["Y"]}, Char(ids[i]));
);
)
));