☐ クールな新機能 - いいえ、しかし:
☑ 多くのユーザーに役立つ可能性があります!!!!
☑ 「バグ」のように感じられるものを削除します
☐ あれば良い
☐ 誰もそれを必要としない
このウィッシュリストのリクエストのきっかけは何ですか?
ユーザーがグラフ ビルダーで X 軸または Y 軸のラベルを別の位置にドラッグしてサブプロットの順序を変更すると、奇妙なことが起こります。
https://community.jmp.com/t5/Discussions/Graph-Builder-settings-for-new-FrameBoxes/mp/561610/highlight/true#M77469
この例では、
- Y 軸の「高さ」を上にドラッグすると、色がリセットされます (!!)
- X 軸の「高さ」を右にドラッグしても、色はリセットされません (?
)
- X 軸の「高さ」をつかんで放すだけで色がリセットされます(!!!)
さらに、新しいサブプロットを追加すると、プロットがどのようになるかはほとんどギャンブルになります。
色/マーカーの設定は新しいサブプロットに複製され、変数がドラッグ&ドロップで追加される場合
-既存のX変数の右側
-既存のY変数の下部
新しい変数が追加されても設定は複製されない
-既存のX変数の左側
-既存の Y 変数の上に (使用例の 99% !!!)
どのような改善を望みますか?
問題を修正してください!
ユーザーがサブプロットの順序を変更したり、新しい変数を追加したりすると、配管レイヤーでいくつかのアクションが実行され、磁器レイヤーですべてが期待どおりに動作するようになります。
このアイデアはなぜ重要なのでしょうか?
1) サブプロットの順序を変更する場合、すべてのユーザーはサブプロットの位置のみが変更すると予想しますが、色の設定が変更するとは予想しません。
2) ユーザーが x 軸または y 軸に変数を追加する場合、結果は予測可能でなければなりません。新しい変数を既存の変数の左、右、上、下のどこに追加するかに関係なく、結果は同じである必要があります。
その他の希望
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 534, 496 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 9 ) ) )
);
// change color/marker settings
scalebox = gb << get legend server();
scalebox << Legend Model(
9,
Properties( 0, {Line Color( 43 ), Marker( "Down Triangle" )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 0 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
);
// add second Y variable
gb << add variable( {:height, Role( "Y" )} );
gb << add variable( {:sex, Role( "X" )} );
Wait( 0 );
New Window( "Modal Dialog example",
<<TYPE></TYPE>
この問題をいろいろ試しているうちに、Jmp がなぜこのように動作するのかがよく分かるようになりました。
最初の投稿のスクリプトを実行すると、グラフ ビルダー レポートのソース コードは次のようになります。
Graph Builder(
Variables( X( :height ), X( :sex ), Y( :weight ), Y( :height ), Color( :sex ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 11 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 12 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
9,
Properties(
0,
{Line Color( 43 ), Marker( "Down Triangle" )},
Item ID( "F", 1 )
),
Properties(
1,
{Line Color( 0 ), Marker Size( 10 )},
Item ID( "M", 1 )
)
)}
)
)
);凡例 #9 の最初のサブプロットには特別な線とマーカーの設定がありますが、他のサブプロット (凡例 #10-12) には設定がありません。したがって、設定 #9 は他のサブプロットに自動的に「ブロードキャスト」されます。これは、他のサブプロットが同じ色列を共有し、したがって同じ凡例エントリを共有するためです。
これは、最初に設定が適用され、その後に新しいサブプロットが生成されたためです。ユーザーが凡例内の項目の 1 セットのみで設定を変更した場合も同じことが起こります。

次に、新しい設定がすべてのプロットに一度に適用され、スクリプトでは最初の凡例 # に対してのみ変更が表示されます。
ユーザーが各サブプロットの凡例エントリを有効にすると、サブプロットを個別に変更できます。

ここで別のプロット (以下のコード) に切り替えて、何が起こるかを確認しましょう。ここでは、すべてのサブプロットに独自の書式設定 (共通の色の列なし) があり、サブプロット グループの 1 つ (Y 軸の 1 つの列) を別の場所にドラッグすると、他のサブプロットは設定を保持し、移動したサブプロットのみ設定が失われます。
これは許容できる動作です(**) - 列をまったく別の場所 (ビデオの後半で x 軸) にドラッグすることもできるためです。その場合、書式設定がコピーされるとは誰も予想しません。
ビデオの最後に、列は元の位置に戻され、プロットは以前とは違って見えます。これはどういうわけか問題ありません。私たちはすでにそのような動作を受け入れているので、そうあるべきです (**):)
ちょっと驚きました。
注意: 古いプロットを復元するには、CTRL + Z を押すか、列をドラッグしながら ESC キーを押します。
dt = new table();
dt << add rows(1);
c1= dt << new column ("col1",Nominal,set each value (1));
c2= dt << new column ("col2",Nominal,set each value (2));
c3= dt << new column ("col3",Nominal,set each value (3));
c4= dt << new column ("col4",Nominal,set each value (4));
c5= dt << new column ("col5",Nominal,set each value (5));
c6= dt << new column ("col6",Nominal,set each value (6));
Graph Builder(
Size( 330, 347 ),
Show Control Panel( 0 ),
Graph Spacing( 10 ),
Variables(
X( :col1 ),
X( :col2 ),
X( :col3 ),
Y( :col6 ),
Y( :col5 ),
Y( :col4 )
),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 7 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 3 ), Points( X, Y, Legend( 2 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 8 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 3 ) ) ),
Elements( Position( 2, 3 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 3, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 3, 2 ), Points( X, Y, Legend( 5 ) ) ),
Elements( Position( 3, 3 ), Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
7,
Properties(
0,
{Line Color( 3 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
1,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Left Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
2,
Properties(
0,
{Line Color( 36 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
8,
Properties(
0,
{Line Color( 3 ), Marker( "Filled Up Triangle" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
3,
Properties(
0,
{Line Color( 38 ), Marker( "FilledCircle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
4,
Properties(
0,
{Line Color( 36 ), Marker( "Filled Down Triangle" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
9,
Properties(
0,
{Line Color( 3 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
5,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Right Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
6,
Properties(
0,
{Line Color( 36 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "1" )} ),
Dispatch( {}, "Y title", TextEditBox,
{Set Text( "6" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 1 title", TextEditBox,
{Set Text( "5" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 2 title", TextEditBox,
{Set Text( "4" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "X 1 title", TextEditBox, {Set Text( "2" )} ),
Dispatch( {}, "X 2 title", TextEditBox, {Set Text( "3" )} )
)
)