チャート内のレベルをグローバルに設定する方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />チャートから作成したスクリプトをいくつか使用しています。 多くの場合、これらのグラフには JMP がレベルに分割したデータが含まれていますが、私の目的ではそれらは事実上同じです。 たとえば、次のコードはサイト間の平均除外率のグラフです。
チャート(
バツ( : IDコード) 、
Y (平均( :除外率)) 、
平均値に誤差範囲を追加(名前( 「信頼区間 (プール)」 )( 0.95 )) 、
オーバーレイ軸<< {{フォーマット( 「12月固定」 、 12 、 3 ) 、分( 0.935 ) 、マックス( 0.9975 ) 、
株式会社( 0.005 ) 、マイナーティック( 1 )}} 、
オーバーレイスタック軸<< {{フォーマット( 「12月固定」 、 12 、 0 ) 、分( - 1.5 ) 、マックス( 8.5 ) 、株式会社( 1 ) 、
マイナーティック( 1 )}} 、
レベル[ 1 】 << {色( - 4221340 ) 、マーカー( 29 )} 、
レベル[ 2 】 << {色( - 4221340 ) 、マーカー( 29 )} 、
レベル[ 3 ] << {色( - 4221340 ) 、マーカー( 29 )} 、
レベル[ 4 】 << {色( - 4221340 ) 、マーカー( 29 )} 、
レベル[ 5 】 << {色( - 4221340 ) 、マーカー( 29 )} 、
レベル[ 6 】 << {色( - 4221340 ) 、マーカー( 29 )} 、
レベル[ 7 】 << {色( - 4221340 ) 、マーカー( 29 )} 、
Y [ 1 】 <<ポイントチャート( 1 ) 、
レポートに送信(
急送({} 、 「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 ) 、
新しい列( 「IDコード」 、キャラクター、 「公称」 、
設定値( { 「ああ」 、 「ああ」 、 「ああ」 、 「BB」 、 「BB」 、 「CC」 、 「CC」 、 「CC」 } ) ) 、
新しい列( 「除外率」 、数値、 「連続」 、フォーマット( "最高" 、 12 ) 、
設定値( [ 0.05 、 0.07 、 0.08 、 0.5 、 0.6 、 0.4 、 0.3 、 0.2 】 ) )
) ;
ident_codes = dt : IDコード<<値を取得する;
unique_codes = get_unique_values ( ident_codes ) ;
ncode =ナイアイテム( unique_codes ) ;
dt <<チャート(
バツ( : IDコード) 、
Y (平均( :除外率)) 、
平均値に誤差範囲を追加(名前( 「信頼区間 (プール)」 )( 0.95 )) 、
オーバーレイ軸<< {{フォーマット( 「12月固定」 、 12 、 3 ) 、分( 0.935 ) 、マックス( 0.9975 ) 、
株式会社( 0.005 ) 、マイナーティック( 1 )}} 、
オーバーレイスタック軸<< {{フォーマット( 「12月固定」 、 12 、 0 ) 、分( - 1.5 ) 、マックス( 8.5 ) 、株式会社( 1 ) 、
マイナーティック( 1 )}} 、
// 各レベルに同じ色とマーカーを割り当てます
のために(私= 1 、私<= ncode 、私++、
レベル[私】 << {色( - 4221340 ) 、マーカー( 29 )} 、
) 、
Y [ 1 】 <<ポイントチャート( 1 ) 、
レポートに送信(
急送({} 、 「102」 、スケールボックス、 {フォーマット( "パーセント" 、 6 、 0 ) 、メジャーグリッドを表示( 1 )}) 、
急送({} 、 「」 、軸ボックス( 2 ) 、 {軸ラベルの追加( 「平均値(除外率)」 )}) 、
急送({} 、 「平均値(除外率)」 、テキストエディットボックス、 {フォントサイズの設定( 20 )}) 、
急送(
{} 、
「チャートグラフ」 、
フレームボックス、
{フレームサイズ( 704 、 536 ) 、マーカーのサイズ( 6 )}
)
)
)
get_unique_values 関数のコードは次のとおりです。
固有の値の取得=関数( {リスト内} 、
{デフォルトのローカル} 、
一時= [ => 0 】 ;
に挿入(一時、リスト内) ;
一時<<鍵を取得する;
) ;
Re: チャート内のレベルをグローバルに設定する方法ありがとう、でもそれは私がグローバルに意味するものではありません。 私は、JMP をすべてのチャートを同じ方法で作成するように固定することに興味はありません。 進行中のプロジェクトの特定のデータセット用のスクリプトがあり、レポート期間ごとにレベルの数が変化する可能性があります。 JMP がスクリプトを生成する方法、レベルの設定は明示的であるため、レベルをグローバルに設定する方法があるかどうか知りたいチャート内で。 46 レベルのデータセット用の同様のスクリプトがあり、各レベルがまったく同じ設定であるにもかかわらず、スクリプトは 46 レベルのパラメーター行を生成しました。
JMP では、レベルは常に明示的であり、ユーザーはグラフ内でレベルを異なる方法で表現することを常に望んでいることを前提としているようです。 それが当てはまる場合もありますが、このグラフでレベルとみなされているのは、X 軸上のカテゴリーです。
Re: チャート内のレベルをグローバルに設定する方法「環境設定」でデフォルトを設定できます。
ファイル==>設定==>グラフ
デフォルトのマーカーとカラーセットをそこで指定できます。

これで希望通りの結果が得られない場合は、見つかったレベルの数をテストし、必要に応じてコードを生成するようにスクリプトを簡単に変更できます。