グラフビルダーをスライダーと組み合わせて使用して、プロットの外観を変更します。以下の例では、色の縮尺をインタラクティブに変更するためのマップとスライダーボックスを備えたウィンドウを作成します。 スクリプトを使用してさまざまなウィンドウを作成します(もちろん、さまざまな変数を使用する場合でも、この例ではこのようなものは必要ありません)。名前空間を使用して変数を割り当てようとしているにもかかわらず、最後に作成されたウィンドウに対してのみ機能します。 私は別の方法を試しましたが、すべて失敗しました。 誰か助けてもらえますか?
Names Default To Here(1);
dtable= Open("$SAMPLE_DATA/SAT.jmp");
name="Map";
For(k=1, k<=10, k++,
If(Namespace Exists(Eval("ns" || name || Char(k))),
//If(k = 10,
// hanlde the max number of allowed namespaces
//);
,
name= name || char(k);
nsRef = New Namespace(Eval("ns" || name ));
Break();
)
);
nsRef << Insert("column", "% Taking (2004)");
nsRef << Insert("min", col min(column(dtable, "% Taking (2004)")));
nsRef << Insert("max", col max(column(dtable, "% Taking (2004)")));
nsRef << Insert("slmin", col min(column(dtable, "% Taking (2004)")));
nsRef << Insert("slmax", col max(column(dtable, "% Taking (2004)")));
datacolumn=column(dtable, nsRef:column );
nsRef << Insert("slider1",
slider box(nsRef:min,nsRef:max,nsRef:slmax,
title= Current Window() << Get Window Title;
ns = NameSpace(Eval("ns" || title));
slmin=ns:slmin;
slmax=ns:slmax;
scale=Matrix( {slmin,slmax} );
scale=scale`;
ns:gb <<SENDTOREPORT></SENDTOREPORT>
あなたは正しい方向に動いています。 ローカルスペースが必要です。ここでのタスクに応じて、いくつかのオプションをお勧めします。
- 凡例を変更するだけで、各GBは別々のウィンドウに表示されるため、これを行う簡単な方法は、ウィンドウスコープ、ウィンドウ名前空間を使用することです。 window:slider1 = SliderBox() 。 添付のスクリプトを参照してください。
- 凡例のみが変更され、ウィンドウに複数のGBがある場合は、 << Set Function(Function())対応するGBへの相対参照を使用するスライダーボックスの場合。 GBとHListBox(TextBox、Sliderbox)がVListBoxにネストされている場合、関数は(this << parent)<< parentのようになります。VListBoxにアクセスするには、メッセージを使用して凡例ボックスにアクセスし、変更を加えることができます。Xpath()を使用するのが好きです。 このタイプのコーディングは少し注意が必要です。
- Yが異なるがXが同じであるGBが複数あるとします。 Xを制限するか、Y2ではなくY1の行を除外する場合は、各GBに独自の行が必要です。データフィルターコンテキストボックス() 、ローカルデータフィルター。
うまくいけば、ウィンドウスコープを使用する添付のスクリプトが現在のニーズを満たすでしょう。