通常の分位点プロットの線の色を行の凡例に設定された行の色に一致させる一元プロットでは、行凡例のカラーテーマ「SAS Statistical」でマーカーに色を付けますが、標準分位プロットのマーカーを接続する線は引き続き「JMP デフォルト」色を使用します。

「凡例設定」に移動し、色のテーマを「SAS Statistical」に変更することで、線の色を「SAS Statistical」に手動で変更できます。ただし、この方法は実際には、以下で強調表示されているように JSL 内の色をハードコーディングするため、一般的なソリューションとして使用することはできません。たとえば、4 つのグループ (1C、2E、3E、および 4E) を持つ別のデータセットでは、4E の線の色は定義されていません。JSLを使用して、グループの数に関係なく、行の凡例で設定した行の色と線の色を一致させる一般的な方法はありますか?ありがとう。

Oneway(
Y( :Data ),
X( :Group ),
Plot Actual by Quantile( 1 ),
Line of Fit( 0 ),
Box Plots( 1 ),
X Axis Proportional( 0 ),
Points Jittered( 1 ),
Grand Mean( 0 ),
SendToReport(
Dispatch(
{},
"222",
ScaleBox,
<FONT color="#FF0000">{Legend Model(
1,
Properties(
0,
{Line Color( -7306931 ), Fill Color( -7306931 )},
Item ID( "1C", 1 )
),
Properties(
1,
{Line Color( -13654875 ), Fill Color( -13654875 )},
Item ID( "2E", 1 )
),
Properties(
2,
{Line Color( -6727072 ), Fill Color( -6727072 )},
Item ID( "3E", 1 )
)
)}</FONT>
),
Dispatch(
{},
"Oneway Plot",
FrameBox,
{DispatchSeg( Box Plot Seg( 1 ), Line Color( "Red" ) ),
DispatchSeg( Box Plot Seg( 2 ), Line Color( "Red" ) ),
DispatchSeg( Box Plot Seg( 3 ), Line Color( "Red" ) ),
Row Legend(
Group,
Color( 1 ),
Color Theme( "SAS Statistical" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる更新された JSL 関数を投稿するのを忘れていました:
SetNQPLineColor = function({ow,theme},
{Default Local},<BR />
// Get the colors defined by the Color Theme
c = Get Color Theme Detail( eval(theme) );
// Get the # of line segs
ow_frmbx = ow << xpath("//FrameBox[@helpKey=\!"Oneway QuantilePlot\!"]");
Nseg = ow_frmbx << segCount("Line Seg");
Nseg=Nseg[1];
// Loop across the segments setting the lines to the required colors
For( i = 1, i <= min( Nseg , 2 * N Items(Eval List(c[3])) ), i+= 2,
seg = ow_frmbx << Find Seg( Line Seg( i ) );
seg << Line Color( c[3][Ceiling( i / 2 )] );
);
"Done";
);Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる@txnelson提案ありがとう。おそらく問題は解決したと思います。最初の 12 グループの色のみを設定し、残りはそのままにすると、JMP にはこれらの 12 グループに基づいて色を生成するアルゴリズムがあるようで、生成された色は「列ごとの色」の行の色と一致します。 :

Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる私にはわかりません。ドキュメントを調べたり、いくつかのテストを実行したりして、それが何をするのかを調べます。もう 1 つのオプションは、色の設定をすべて制御して、独自の色を考え出すことです。
Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる@txnelsonフォローアップの質問: 12 を超えるグループがある場合、次のエラーが発生し、行 #13 が白になります。
Ceiling(i / 2) = 13;
Subscript Range in access or evaluation of 'c[3][Ceiling(i / 2)]' , c[3][/*###*/Ceiling( i / 2 )]

「SAS Statistical」には 12 色しか定義されていないようです。
N Items(Eval List(Get Color Theme Detail("SAS Statistical")[3])) = 12;では、カラーテーマで定義されている色の数より多くのグループがある場合、JMP はそれをどのように処理するのでしょうか?たとえば、上のプロットでは、グループ 13 のマーカーの色は他の 12 グループとは異なります。JMP はこの色をどのように決定するのでしょうか?ありがとう。
Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させるグループ数を見つけるために dt に戻る必要がないようにスクリプトを少し変更し、使いやすいように関数にしました。
SetNQPLineColor = function({ow,theme},
{Default Local},
// Get the colors defined by the Color Theme
c = Get Color Theme Detail( eval(theme) );
// Get the # of line segs
ow_frmbx = ow << xpath("//FrameBox[@helpKey=\!"Oneway QuantilePlot\!"]");
Nseg = ow_frmbx << segCount("Line Seg");
Nseg=Nseg[1];
// Loop across the segments setting the lines to the required colors
For( i = 1, i <= Nseg, i+= 2,
seg = ow_frmbx << Find Seg( Line Seg( i ) );
seg << Line Color( c[3][Ceiling( i / 2 )] );
);
"Done!";
);
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Set the row state colors
dt << color by column( :age , color theme("SAS Statistical"));
// Create the chart
ow1 = Oneway(
Y( :height ),
X( :age ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 )
);
SetNQPLineColor(ow1,"SAS Statistical");
Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる@txnelsonありがとう!これは見事に機能します。
Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる私はついにあなたの実際に述べられている問題を理解したと思います....私の頭の悪さを許してください....
ここでは、カラーテーマを使用して点の色と線の色を一致させる方法を示します。この場合は、SAS Statistical カラーテーマです。

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
// Set the row state colors
dt << color by column( :age , color theme("SAS Statistical"));
// Find out how many groupings there are
summarize( dt, grpBy = By( :age ) );
// Create the chart
ow = Oneway(
Y( :height ),
X( :age ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 )
);
// Get the colors defined by the Color Theme
c = Get Color Theme Detail( "SAS Statistical" );
// Loop across the segments setting the lines to the required colors
For( i = 1, i <= N Items( grpBy ) * 2, i = i + 2,
seg = (Report( ow )[FrameBox( 2 )] << Find Seg( Line Seg( i ) ));
seg << line color( c[3][Ceiling( i / 2 )] );
);Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる@txnelsonお返事ありがとうございます。ただし、「JMP Default」以外のカラーテーマでは機能しません。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << color by column( :sex , <FONT color="#ff0000"><STRONG>color theme("SAS Statistical")</STRONG></FONT>);
Oneway(
Y( :height ),
X( :sex ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 ),
SendToReport(
Dispatch(
{},
"Oneway Plot",
FrameBox,
{DispatchSeg( Box Plot Seg( 1 ), Line Color( "Red" ) ), DispatchSeg(
Box Plot Seg( 2 ),
Line Color( "Red" )
)}
)
)
);
Re: 通常の分位点プロットの線の色を行凡例に設定された行の色に一致させる行の行状態の色を設定し、Oneway を実行するだけで、必要なものが得られると思います。

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt << color by column( :sex );
Oneway(
Y( :height ),
X( :sex ),
Plot Actual by Quantile( 1 ),
Box Plots( 1 ),
SendToReport(
Dispatch(
{},
"Oneway Plot",
FrameBox,
{DispatchSeg( Box Plot Seg( 1 ), Line Color( "Red" ) ), DispatchSeg(
Box Plot Seg( 2 ),
Line Color( "Red" )
)}
)
)
);