データフィルター/ローカルデータフィルターを水平に配置することは可能ですか?(UIの変更)こんにちは、みんな、
JMPのデータフィルターを使っていて、フィルターが10個以上あることがよくあります。現状では、フィルターがすべて縦に長いリストに表示されており、フィルターを適用するだけでもかなりスクロールダウンしなければならず、とても違和感があります。
データ フィルター UI をカスタマイズして、いくつかのフィルターを (ドロップダウンの長い垂直スタックではなく) 水平方向に並べて表示することは可能ですか?
ご指導をいただければ幸いです。
自動化とスクリプト基本的なデータ分析とモデリングRe: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)複数のデータ フィルターを使用することで、少なくともそれを再現できると思います。 データ フィルターを 2 列に並べることはできますか?また、表示ボックスを多用してこれを行うこともできるかもしれませんが、試していません (このような場合はカスタム データ フィルターを使用します)。
Re: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)
ご返信ありがとうございます。データフィルターの主な利点は条件付きフィルタリングを適用できることなので、理想的には、複数のフィルターではなく単一のデータフィルターで実現できるはずです。複数のフィルターを使用することは解決策として考えられますが、条件付きフィルタリングを実現するために内部フィルターにコンテキストを渡すのが簡単かどうかはわかりません。それに、UIの見栄えも非常に悪くなります。
また、カスタム データ フィルター (ComboBox でテスト済み) にはいくつかの制限があることに気付きました。
- UIの問題:列の値が大きすぎると、ドロップダウンが長くなりすぎて使いにくくなります。たとえ長い値が1つしかなくてもです。(ドロップダウンとして表示する前に、データを切り捨てたりフィルタリングしたりする作業が増えます。(データフィルターよりも作業量が多く、速度も遅くなります。))
- パフォーマンスの問題:数千件のレコードを表示するのに非常に時間がかかります。様々なアプローチ(一意の値を取得するための集計や、ハッシュを使用して一意の列値を識別するなど)を試しましたが、どれもうまくいきませんでした。
- 条件付きフィルタリングの複雑さ: ドロップダウンが多数ある場合、条件付きフィルタリングを実装するには大量のコードを記述する必要があり、すぐに面倒になります。
Re: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)ご返答ありがとうございます。
条件が満たされたコンボボックス内のデータ テーブルの列値を表示する、共有できるサンプル コードはありますか?
Re: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)少し異なるアプローチ:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 437, 787 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
Local Data Filter(
Add Filter(
columns( :sex, :height, :weight )
)
)
);
Current Report()["Local Data Filter", List Box( 6 )] << set Horizontal( 1 );
Current Report()[ List Box( 4 )] << set Horizontal( 0 );

Re: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)何をしようとしているのですか?どのような条件を適用すべきですか?どの順番で条件を適用すべきですか?順番に適用する必要がありますか、それとも一部をスキップできますか?メインテーブルに変更を加えることはできますか(新しい列や選択項目など)?フィルターはいつ適用されますか(即時適用/ボタン押下時)?<< Select Where with restrict は、おそらく非常にシンプルな選択肢の一つです。
ローカルデータフィルタはコンボボックス(または同様のセレクタ)を使用できます
Names Default To Here(1);
colcount = 3;
dt = Open("$SAMPLE_DATA/Car Poll.jmp");
dist = dt << Distribution(
Nominal Distribution(Column(:country)),
Local Data Filter(
Conditional,
Add Filter(
columns(:country, :size, :type),
Display(:country, N Items(3), "Single Category Display"),
Display(:size, N Items(3), "Single Category Display"),
Display(:type, N Items(3), "Single Category Display")
)
)
);
ldf_ob = (Report(dist) << Top Parent)[Outline Box("Local Data Filter")];
lub = ldf_ob[LineupBox(2)];
lub << N Col(colcount);
For(i = 1, i <= colcount, i++,
lub << Prepend(Spacer Box(Size(200, 0)));
);
Write();
Re: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)グラフビルダーなしでも動作すると思いますか?グラフビルダーを削除すると、水平方向に好きなように表示できるようになりますか?
Re: データフィルター/ローカルデータフィルターを水平に配置することは可能ですか? (UIの変更)すべてのリストボックスには、Horizontal(0/1) フラグがあります。
フラグを変更するだけで、表示オブジェクトのすべての垂直リストを水平リストに変更できます。
これは、水平モードの純粋なデータ フィルターの例です (これが役立つかどうかはわかりません)
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
win = new window("test", dt << data Filter(
Add Filter(
columns( :height, :countries visited, :family cars )
)
));
win["Data Filter",ListBox(7)] << set horizontal(1)