グラフ ビルダー、要素の色を変更する方法、および SendToReport 構文に関する情報こんにちは、
動的コンテンツを含むグラフを作成します (変数の数は実行時に決定されます)。
グラフビルダーを設定した後、新しい色の割り当てなど、いくつかのことを変更したいと考えています。 これを後で実行する理由は、スクリプトの他の部分を実行する前は変更内容が分からないため、前に実行することはできません。
基本的な問題を次の例に単純化しました。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
// do some other stuff incl. addition or removal of variables to gb
// how do I *MODIFY* the color of Points, Smoother here or add a Line Plot?
グラフ内の変数の位置がわかると助かります (上記の例では 1,1)。
乾杯、
アレックス
Re: 線の色を変える方法こんにちは、アレックス、
返信が遅れて申し訳ありません。
次の Legend Model メッセージが送信されているとします。
Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )
- 最初の引数 (2) は、ScaleBox 内の特定の Legend Model を参照する一意の ID です。 上の例では、値 1 は点を含む凡例モデルを指し、値 2 はより滑らかな線を指します。
- 2 番目の引数 (Properties( 1, {Line Color( 4 )} )) には、指定されたプロパティのセットを適用する凡例モデル内のどの要素に関する情報が含まれます。
- プロパティ (1) 内の最初の引数は、新しいプロパティを適用する項目を識別する 0 から始まる項目番号です。
- Properties ({Line Color( 4 )}) 内の 2 番目の引数は、特定の凡例モデル項目に適用するプロパティのリストです。 この例では、線の色を緑色に変更しています。
以下にいくつかの例を示します。
次のスクリプトは、最初の凡例モデルの最初の項目 (ポイント) を緑色に設定します。 この場合、最初の項目は「F」になります。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 1, Properties( 0, {Line Color( 4 )} ) )}
)
)
);
(ここからは、上記のスクリプト内で置き換える Legend Model 部分のみを示します)
次の凡例モデル スニペットは、ポイント凡例モデル内の 2 番目の項目 (「M」) の色を変更します。
Legend Model( 1, Properties( 1, {Line Color( 4 )} ) )
次の凡例モデル スニペットは、より滑らかな線の凡例モデル内の最初の項目 (「F」) の色を変更します。
Legend Model( 2, Properties( 0, {Line Color( 4 )} ) )
次の凡例モデル スニペットは、より滑らかな線の凡例モデル内の 2 番目の項目 (「M」) の色を変更します。
Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )
注: スムーサー ラインの線の色を変更すると、対応するポイントの色も変更されますが、ポイントのポイントの色を変更しても、関連付けられたスムーザー ラインの色には影響しません。
Re: 線の色を変える方法フィードバックありがとうございます。
Legend Model の構文についても説明していただけますか?
Re: 線の色を変える方法SendToReport 引数の構文は次のとおりです (スクリプト索引から)。
SendToReport( Dispatch( "Outline name", "Element name", Element type, command );
ディスパッチ コマンドの 2 番目の引数 (「要素名」) は、正しい DisplayBox を見つけるための識別子として使用されます。 たとえば、FrameBox の Dispatch コマンドを使用する場合、この引数は「helpKey」属性と一致します。 要素タイプ引数は、(DisplayBox ごとに異なるため) 検索する属性のタイプを JMP に指示します。
ScaleBox (この場合は必要) の場合、要素名の引数は「charID」属性を参照します。 グラフビルダーはさまざまな用途に合わせて複数のScaleBoxを作成しますが、Legend Modelなどのメッセージ送信に必要なScaleBoxには「400」というcharIDが割り当てられています。
以下は、作成された 5 つの ScaleBox を示すグラフ ビルダー (さらに下のスクリプトを使用して作成) の XML の抜粋です。 スケール ボックスの 1 つに「400」という charID があることがわかります。これは、凡例モデル メッセージに使用する必要があるスケール ボックスです。
<..truncated..>
<..truncated..>
<..truncated..>
Legend Model メッセージを使用するもう 1 つの方法は、メッセージをこの ScaleBox に直接送信することです。 この ScaleBox を参照する 1 つの方法は、以下に示すように XPath を使用することです。 このメソッドは、charID が「400」である ScaleBox を参照します。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
scalebox = gb << xpath("//ScaleBox[@charID=\!"400\!"]");
scalebox << Legend Model( 2, Properties( 1, {Line Color( 4 )} ) );
以下のスクリプトは同じことを行いますが、代わりに SendToReport メソッドを使用します。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Grid Transparency( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )}
)
)
);
ありがとう、
Re: 線の色を変える方法これは、JMP 開発にとって大きな要求です。つまり、グラフ ビルダーの内部動作を文書化したいということです。
Re: 線の色を変える方法私も同じことをしますが、生成されたコードを確認したので、それを理解できるようにする必要があります。
Legend Model のドキュメントも「400」のドキュメントも見つかりませんでした。
だからこそ私は助けを求めており、フィードバックを大いに感謝しています。
Re: 線の色を変える方法グラフ ビルダーの「内部」構文のすべてが文書化されているわけではありません。 GBに関しては、次のことを行います。
グラフの種類、記号、色、線などを含め、希望どおりのグラフを作成します。
小さな赤い三角形をクリックして JSL コードを取得します。
JSLコードをスクリプトに埋め込みます
基本的に、面倒な作業は GB に任せて、GB が生成するコードを使用します。
Re: 線の色を変える方法こんにちは、イアンさん
素晴らしい例をありがとう。
スクリプト ガイドの中で、凡例モデルの構文、値「400」の意味に関する情報が記載されている部分を教えていただけますか。
「レジェンドモデル」という言葉で検索してもヒットしませんでした。 400 にはいくつかのヒットがありましたが、関連するものは特定できませんでした。
ご協力ありがとうございました!
乾杯、
アレックス
Re: 線の色を変える方法それを対話的に実行し、JMP が生成するコードを検査してください。 例を適応させると次のようになります。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
// Add 'weight'
Wait(2);
gbb = Report( gb )[Graph Builder Box( 1 )];
upper_graph_inner_pos = 2;
gbb << Add Variable({Column( "weight" ), Role( "Y" ), Position( 1 ), Inner Position( upper_graph_inner_pos )});
// Change the colour of the points and smoother for 'weight' to green
Wait(2);
gb << SendToReport( Dispatch({}, "400", ScaleBox, {Legend Model( 2, Properties( 1, {Line Color( 4 )} ) )} ) );
それほど重要ではない質問については、[ヘルプ] > [書籍] > [スクリプト ガイド] を参照すると、多くの場合、いくつかのヒントが得られます。
Re: 線の色を変える方法同様の質問がありましたが、回答は得られませんでした。 このフォーラムの JMP 専門家はこの質問を避けているか、JMP ユーザーにこれを深く知るよう勧めていないようです。
Re: 線の色を変える方法ここにもっと良い例があります。これでポイントの色とウェイトのスムーザーを変更するにはどうすればよいですか?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = Graph Builder(
Automatic Recalc( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
gbb = Report( gb )[Graph Builder Box( 1 )];
upper_graph_inner_pos = 2;
gbb << Add Variable(
{Column( "weight" ), Role( "Y" ), Position( 1 ), Inner Position( upper_graph_inner_pos )}
);
gb << SendToReport(
Dispatch( {}, "400", ScaleBox, {Legend Model( 1, Properties( 0, {Line Color( RGB color(31,119,180) ), Fill Color( 0 )} ) )} )
);
それほど重要ではない質問:
この文脈での「400」は何を意味しますか?
Re: 線の色を変更する方法こんにちは@Justin_Chilton 、 helpKeyとcharID以外に、要素名に使用される追加の識別子は何ですか?
軸ラベルを変更すると、JSLコードは次のようになります。
gb << SendToReport( Dispatch( {}, "<STRONG>X Title</STRONG>", TextEditBox, {Set Text( "new" )} ))...しかし、 X タイトルは表示ツリーの XML コードに表示されません。これはどの識別子ですか?
ディスプレイボックスと会話する