<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは皆さん、
チェックボックスとドロップダウンメニューを備えたウィンドウを作成する JMP スクリプトを作成しています。 これらのメニューは、レポートの実行やグラフの生成に使用できる条件を選択するために使用されます。 私が作成しているグラフの 1 つは、チェック ボックスの数に応じて線の数が異なります。 どのチェックボックスが選択されているかに関係なく、すべての線を含むグラフを生成することができました。 私が抱えている問題は凡例です。 最初のデータ セットは常に、線だけでなく凡例にも点が表示されます。 そのグラフ上の残りのすべてのデータ セットには、オンラインの凡例上に線が表示されます。 これを修正するには、通常、凡例をダブルクリックし、凡例上で表示したくない点のチェックを手動で外し、スクリプトをコピーしてこれを自動的に実行します。 グラフ上に 4 セットのデータがある場合、凡例ボックスに変更を加えた後のスクリプトは次のようになります。
SendToReport(
急送(
{}、
「400」、
レジェンドボックス、
{位置( {-1, -3, -3, -3, 0, 1, 2, 3} )}
)
... //(その他の Dispatch() コマンド)
)
軸ラベル名の変更など、グラフに移動する他のコマンドがあるため、これは SendToReport() コマンド内の他の Dispatch() コマンドの中に表示されます。 私が抱えている問題は、選択したチェックボックスの数に応じて Postion() コマンド内のリストを変更することができないことです。 正しいリストをハードコーディングすることはできますが、そのコードは選択されたチェック ボックスの数に対してのみ機能します。 たとえば、リストを {-1, -3, -3, 0, 1, 2} に設定した場合、コードは 3 つのチェック ボックスがオンになっている場合にのみ正しく機能します。 選択したチェックボックスの数に応じて正しいリストに変更する変数を作成しました(そして、それが正しく割り当てられていることを確認しました)が、変数をPosition()関数内に配置しても、コードは必要な変更を行いませんに。 以下のコードは、クリックされたチェック ボックスの数に応じて、変数 PL に正しいリストを割り当てます (SUM() 関数内の変数はチェックボックスの出力を表します)。
PL = If(
合計(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 1, {-1, 0 },
合計(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 2, {-1, -3, 0, 1},
合計(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 3, {-1, -3, -3, 0, 1, 2},
合計(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 4, {-1, -3, -3, -3, 0, 1, 2, 3},
合計(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 5, {-1, -3, -3, -3, -3, 0, 1, 2, 3, 4},
合計(IW27、II09、II44、II08、II42、IW29、CC23、IW24) == 6、{-1、-3、-3、-3、-3、-3、0、1、2、3、4 、5}、
合計(IW27、II09、II44、II08、II42、IW29、CC23、IW24) == 7、{-1、-3、-3、-3、-3、-3、-3、0、1、2、 3、4、5、6}、
合計(IW27, II09, II44, II08, II42, IW29, CC23, IW24) == 8, {-1, -3, -3, -3, -3, -3, -3, -3, 0, 1 、2、3、4、5、6、7}、
);
このコードが変数に正しいリストを割り当てていることを確認しました。 次のように変数を接続すると、凡例ボックスからポイントのラベルが希望どおりに削除されません。また、生成したグラフのスクリプトをコピーすると、凡例ボックスに Dispatch() コマンドが表示されません。 。
急送(
{}、
「400」、
レジェンドボックス、
{ポジション( PL )}
)
以前にも同様の方法で変数を使用したことがありますが、リスト全体 (PL[1] など) を挿入するのではなく、常にリスト内の 1 つの数値を参照します。 これの多くのバリエーションを試しましたが、これまでのところどれもうまくいきません (PL[]、{PL}、{PL[]})。
私が何を間違っているのかを理解するのを手伝ってください。 ご不明な点がございましたら、お知らせください。質問に答えるために必要な詳細を提供させていただきます。 これは物事の大局から見れば非常に小さな問題ですが、私は頭がおかしくなり、解決策が見つからずにこの問題を乗り越えるのに苦労しています。 ヘルプ!
jbakri21
イアンの提案に加えて。 ここでは別のアプローチを紹介します。
まず、IF ステートメントがある場合は、代わりに Choose() を使用します。 条件の引数は 1 から始まる整数のシーケンスであるため、等価句 ( expr==1、 expr==2、 expr==3) が組み込まれています。 (詳細については、「JSL 構文リファレンス」を参照してください)。
そうは言っても、これが新しい条件ステートメントになります。
PL =選ぶ(和(IW27、II09、II44、II08、II42、IW29、CC23、IW24)、
{- 1 、 0 }、 // 1
{- 1 、 - 3 、 0 、 1 }、 // 2
{- 1 、 - 3 、 - 3 、 0 、 1 、 2 }、 // 3
{- 1 、 - 3 、 - 3 、 - 3 、 0 、 1 、 2 、 3 }、 // 4
{- 1 、 - 3 、 - 3 、 - 3 、 - 3 、 0 、 1 、 2 、 3 、 4 }、 // 5
{- 1 、 - 3 、 - 3 、 - 3 、 - 3 、 - 3 、 0 、 1 、 2 、 3 、 4 、 5 }、 // 6
{- 1 、 - 3 、 - 3 、 - 3 、 - 3 、 - 3 、 - 3 、 0 、 1 、 2 、 3 、 4 、 5 、 6 }、 // 7
{- 1 、 - 3 、 - 3 、 - 3 、 - 3 、 - 3 、 - 3 、 - 3 、 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 }、 // 8
) ;
Dispatch() で実行しようとしているように、別の JSL ステートメント内で PL を使用するには、パラメーター変数を Expr() 内でラップする必要があります。 それで、
急送(
{}、
「400」、
レジェンドボックス、
{位置(エクスプレッション( PL))}
)
これにより、PL の内容を評価 (または拡張) することができます。前に全体が評価されます。 これを機能させるには、グラフ作成関数全体を Eval( Eval Expr ()) でラップする必要があります。 完全な例を以下に示します。
dt =開ける( "$SAMPLE_DATA/オーストラリア政府観光局.JMP" );
PL = { 0 、 - 1 、 1 、 - 1 、 2 、 - 1 };
//PL = {-1, 0, -1, 1, -1, 2};
評価(
評価式(
dt <<グラフビルダー(
コントロールパネルを表示( 0 )、
変数(
X( :日付 )、
Y( :名前( 「収益 ($'000)」 ))、
Y( :名前( 「ベッド稼働率(%)」 ))、
Y( :名前( 「平均滞在日数(日)」 ))
)、
要素( 位置( 1 、 1 )、ポイント( X、Y、凡例( 4 ) )、スムーザー( X、Y、凡例( 3 ) ) )、
要素( 位置( 1 、 2 )、ポイント( X、Y、凡例( 1 ) )、スムーザー( X、Y、凡例( 2 ) ) )、
要素( 位置( 1 、 3 )、ポイント( X、Y、凡例( 6 ) )、スムーサー( X、Y、凡例( 5 ) ) )、
SendToReport(
急送( {}、 「グラフタイトル」 、TextEditBox、{テキストを設定( 「観光トレンド」 )} )、
急送( {}、 「400」 、LegendBox、{位置(エクスプレッション( PL ) )} )
)
)
)
);
お役に立てれば!
(Scripting Index のより簡単な例を応用して) おそらく、この種のアプローチ (または、わずかに変形したもの) を使用する必要があるでしょう。
デフォルトの名前はここにあります( 1 ) ;
//このメッセージはすべての表示ボックス オブジェクトに適用されます
開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
ビブ=二変量( y ( :重さ) 、バツ( :身長) ) ;
rbiv =ビブ<<報告;
MS = 5 ;
マーカーの追加=エクスプレッション( rbiv <<急送( {} 、 「ビヴァールの陰謀」 、フレームボックス、 {マーカーのサイズ( msTBD )} ) ) ;
代入(マーカーの追加、エクスプレッション( msTBD ) 、 MS ) ;
マーカーの追加;