ループにより、特定の名前のないいくつかのグラフ ビルダーが生成されます。 ジャーナル内のすべてのグラフ(すべて同じ範囲を持つ)の X 軸範囲を変更できるように範囲スライダーを作成したかったのですが、その方法がわかりません。
素晴らしい! そして、それをレンジスライダーにするために、次のことを行いました。
名前のデフォルトは Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << モデリング タイプ( "continuous" );
gb1 = dt << グラフ ビルダー(
サイズ(528、448)、
コントロールパネルを表示(0)、
変数( X( :年齢 ), Y( :身長 ) )、
要素( ポイント( X, Y, 凡例( 5 ) ) )
);
gb2 = dt << グラフ ビルダー(
サイズ(528、448)、
コントロールパネルを表示(0)、
変数( X( :年齢 )、Y( :体重 ) )、
要素( ポイント( X, Y, 凡例( 5 ) ) )
);
slidervar = Report( gb1 )[axisbox( 1 )] << get min;
slidervar2 = Report( gb1 )[axisbox( 1 )] << get max;
新しいウィンドウ( "例",
パネルボックス(「スライダーボックス」、
H リスト ボックス(
rsb = レンジ スライダー ボックス(
Report( gb1 )[axisbox( 1 )] << 最小値を取得、Report( gb1 )[axisbox( 1 )] << 最大値を取得、slidervar、slidervar2、
(
Report( gb1 )[axisbox( 1 )] << Min( slidervar );
Report( gb1 )[axisbox( 1 )] << Max( slidervar2 );
Report( gb2 )[axisbox( 1 )] << Min( slidervar );
Report( gb2 )[axisbox( 1 )] << Max( slidervar2 );
);
)
)
)
);
これで、自分のスクリプトに必要な作業を行うことができました。 ジム、本当にありがとう!
さて、グラフを作成する関数ができました。
chartslist = {}; のような空のリストを作成すると言っています。
次に、関数内で、
a = table << Graph builder(); のような変数をグラフ ビルダーに呼び出します。
次に、(graphslist, a) に挿入します。
ということですか?
各表示オブジェクトへのポインタをリストに取り込むだけで、リストを遡ってそれぞれを参照することで、それぞれのオブジェクトにアクセスできます。
ジム、
しかし、すべてのグラフビルダーオブジェクトに個別に名前を付けていることに気付きました。
質問で述べたように、現在、私のプログラムはループ内で変数を作成することで動作するため、変数名とは呼ばれません。 このため、レポートを参照する方法がわかりません。
これを行う最も簡単な方法は、グローバル データ フィルターを開いて X 軸変数をフィルター変数として選択することです。 範囲を変更できるスライダーが設定されます。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << modeling type( "continuous" );
gb1 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
dt << Data Filter(
Location( {780, 189} ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns( :age ) )
);
を開発したい場合は、スライダー ボックスを設定して、最小値と最大値を変更できます。次のように設定できます。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
dt:age << modeling type( "continuous" );
gb1 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
gb2 = dt << Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
);
slidervar = Report( gb1 )[axisbox( 1 )] << get min;
slidervar2 = Report( gb1 )[axisbox( 1 )] << get max;
New Window( "Example",
Panel Box( "Slider Box",
H List Box(
sb = Slider Box(
Report( gb1 )[axisbox( 1 )] << get min,
Report( gb1 )[axisbox( 1 )] << get max,
slidervar,
Report( gb1 )[axisbox( 1 )] << Min( slidervar );
Report( gb2 )[axisbox( 1 )] << Min( slidervar );
),
sb2 = Slider Box(
Report( gb1 )[axisbox( 1 )] << get min,
Report( gb1 )[axisbox( 1 )] << get max,
slidervar2,
Report( gb1 )[axisbox( 1 )] << Max( slidervar2 );
Report( gb2 )[axisbox( 1 )] << Max( slidervar2 );
)
)
)
);
また、各グラフ ビルダーにグラフィックス スクリプトを追加して、AxisBox(1) の範囲と原点の変更を検出し、変更が検出されたときに、変更があったグラフから AxisBox(1) の設定をコピーすることもできます。が検出された場合は、他の各グラフに移動します。 明らかに、これはより複雑ですが、スライダーを含む別のウィンドウを用意する必要がないという利点があります。