Re: ネストされた/複数のデータ フィルター コンテキスト ボックスそれが私が迷っているところだと思います。 バブル プロットはすべてのソース プロットに依存しているようです。 君は効果的にすることができますあなたの「最終」プロットは、データ フィルター ソース ボックス自体に表示されますが、その後、すべての望ましくない選択されていない/グレー表示されているだけです。
Re: ネストされた/複数のデータ フィルター コンテキスト ボックス断言はできませんが、私が提供したコードの構造を見れば、あなたの構造をサポートするためにそれを拡張できることが想像できます。
サンプルを取得して、フィルターの第 2 レベルで 2 つの異なるフィルター処理グラフに分岐できるかどうかを確認します。
Re: ネストされた/複数のデータ フィルター コンテキスト ボックスこの方法で異なるプロットに異なるサブフィルターを適用できますか? すべてのプロットが同じフィルターを受け取るようです。
一連の独立した (目に見えない) サブフィルターがさまざまなプロット セットに適用された単一のプライマリ フィルターが必要です。 これをよりよく伝えるために、コメントアウトされた「where」フィルターを使用して元の投稿を更新しました。
Re: ネストされた/複数のデータ フィルター コンテキスト ボックスこれは、2 レベル フィルターに関するディスカッションの例です。これは、前回の投稿で提供した例を拡張したものです。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
Data Filter Source Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} )
)
)
)
)
),
Platform(
Current Data Table(),
Bubble Plot( X( :weight ), Y( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
)
)
);Re: ネストされた/複数のデータ フィルター コンテキスト ボックスありがとうジム! 私が何かを誤解/見落としていない限り、これは最初のグラフに基づいて2番目のグラフをフィルタリングするだけです。 最初のグラフに加えて 2 番目のグラフをフィルタリングするにはどうすればよいですか?
すなわち 最初のグラフに基づいて 2 番目のグラフをフィルター処理したいのですが、さらに、最初のフィルターのデータのサブセットのみが必要です。
実質的には、「Where( :ToolID == pTools[j] );」を追加することです。ただし、これを行うと、データ フィルター ソース ボックス (または私の場合はローカル データ フィルター) が完全に無視されます。 私はデータ フィルター ソース ボックスで何が間違っていたのかを突き止めるのに長い時間を費やしましたが、変動性チャートから上記の「場所」の行を削除すると、それが機能していることに気付きました。
Re: ネストされた/複数のデータ フィルター コンテキスト ボックス私はあなたが何を望んでいるのか理解していると信じています。Scripting Index から直接引用した例を次に示します。
ヘルプ==>スクリプト インデックス==>DataFilterSourceBox
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Selection Filter",
Data Filter Context Box(
H List Box(
dfsb =
Data Filter Source Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :age ) ),
Elements(
Bar( X, Legend( 3 ) )
),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Filter" )}
)
)
)
),
Platform(
Current Data Table(),
Bubble Plot(
X( :weight ),
Y( :height ),
Sizes( :age ),
Title Position( 0, 0 )
)
)
)
)
);
あるグラフでの「クリックされた」選択に基づいて、別のグラフをフィルタリングします
ネストされた/複数のデータ フィルター コンテキスト ボックス::編集::コードにコメントを追加し、視覚化に役立つスクリーンショットを含めました。
ネストされたフィルター コンテキスト ボックスを実行したり、効果的に同じことを行うものを生成したりすることは可能ですか? 基本的に、レポート内のすべてのプロットに適用される一連の親フィルターが必要です。 そのプロット内のレポートには、表示するデータを制限するための独自の特定のフィルターが必要です。
次のような対話型レポートがあります。
(1) 2 つの列に分割された H リスト ボックス。
(A) 最初の列には、2 番目の列のすべてに適用されるフィルターのセットが含まれています。
(B) 2 番目の列には、さまざまな「ツールの種類」の複数のタブを含むタブ ボックスが含まれています。
(i) 各タブには、特定のタイプの各「ツール」の変動性チャートの列を含む h リスト ボックスが含まれています。 各列には、表示する「ツール」を制限するための独自のフィルターが必要です。
(a) このフィルターはリストに基づいてハードコーディングされていますが、VarChart は (A) のフィルターに基づいて更新する必要があります。
私が見つけたのは、変動性チャート内に where() を配置すると、(A) のフィルターが無視されることです。 次に、フィルター コンテキスト ボックスをネストしようとしましたが、うまくいかないようです。 新しいフィルタが表示されますが、実際には最も親のフィルタだけが何かを行います。
コードを簡略化/匿名化したバージョンを作成しようとしたため、タイプミスがある可能性があります。
myRootPath = "C:\Log_Testing\"; myLogPath = myRootPath; myReportPath = myRootPath || "報告書\"; mypath = myRootPath || "ログ\"; // プロットする I ツール // フォーマット: ToolID iTools = {"i1", "i5"}; // プロットする P ツール // フォーマット: ToolID pTools = {"p1", "p2"};現在のディレクトリを設定します( mypath ); mainDt = Open( myLogPath || "Log.jmp" );バッチ インタラクティブ( 1 ); //バッチモード dt_name = mainDt << get name(); dt_path = myLogPath; mainDt << 選択をクリア; filterContextBox = データ フィルター コンテキスト ボックス(); spcWin = New Window( dt_name || "_VarCharts", filterContextBox ); filterBox = H List Box( mainDt << Data Filter( //Conditional, Local, Add Filter( columns( :WW,
), Display( :WW, ブロック表示 ), Display(
, ブロック表示 ), ), Mode( Select( 0 ), Show( 1 ), Include( 1 ) ), ) ); filterContextBox << Append( フィルターボックス ); filterBox << Append( tb = Tab Box() ); tb << Add( "P", hPTab = H List Box() ); tb << Add( "I", hITab = H List Box() ); numPTools = N 個のアイテム ( pTools ); numITools = N Items( iTools ); //P プロットの作成 For( j = 1, j <= numPTools, j++, hPTab << Append( vToolBox = V List Box() ); vToolBox << Append( toolTab = Outline Box( pTools[j] ) ); ycol = "VariableName"; parseName = "Variability Chart for " || ycol; toolTab << append( NewChart = Variability Chart( Y( Column( ycol ) ), X( :WW,
)、Max Iter( 100 )、Conv Limit( 0.00000001 )、Number Integration Abscissas( 128 )、Number Function Evals( 65536 )、Analysis Type( Name( "Choose best analysis (EMS REML Bayesian)" ) )、Connect Cell Means( 1 )、標準偏差チャート( 0 )、ジッターされたポイント( 0 )、AIAGラベル( 0 )、自動再計算( 1 )、
/* 次の行がコメントアウトされていない場合、ローカル フィルターは無視され、このフィルターのみが使用されます。 両方必要です。 */
Where( :ToolID == pTools[j] ); SendToReport( Dispatch( {}, "変動ゲージ", OutlineBox, {Set Title( "" )} ), Dispatch( {parseName}, "2", ScaleBox( 2 ), {Format( "Fixed Dec", 4, 0 ), Min( 0 )} ), Dispatch( {parseName}, "Group Means", StringColBox, {Visibility( "Collapse" )} ), Dispatch( {parseName}, "", PlotColBox, {Visibility( "Collapse" ) } ) ) ) ); );
Re: ネストされた/複数のデータ フィルター コンテキスト ボックスコードをいじってみましたが、ご指定どおりに動作させることができませんでした。
申し訳ありませんが、コミュニティの他のメンバーがアイデアを持っているかもしれません。
これは、単一の選択グラフから取得された 2 つの独立したパスがある例です。これは希望のものに近いと思います。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Potential",
Character,
"Nominal",
Set Values(
{"1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2",
"1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2", "1", "2"}
)
);
New Window( "Shared Local Filter",
Data Filter Context Box(
H List Box(
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :age ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
//Data Filter Context Box(
V List Box(
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :Potential ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
Platform(
Current Data Table(),
Bubble Plot( Y( :weight ), X( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
),
),
Data Filter Source Box(
H List Box(
Graph Builder(
Size( 208, 207 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "Graph Builder", OutlineBox, {Set Title( "Filter" )} ) )
),
Platform(
Current Data Table(),
Bubble Plot( X( :weight ), Y( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
)
)
)
//)
)
)
)
)
);Re: ネストされた/複数のデータ フィルター コンテキスト ボックスありがとうジム! 私も似たようなことを思いつきました。 選択されていないポイントを非表示/サイズ縮小する方法を見つけようとしましたが、それは可能ではないようです。
これを行う全く別の方法にも到達したと思います。それは、「by()」を使用し、別個の SendToGroup() を使用して各 ToolID をループすることです。 タイトルを設定するのは少し複雑ですが、結果が分かり次第投稿します。 あなたのすべての投稿がそうであったように、将来誰かの役に立つことを願っています。Re: ネストされた/複数のデータ フィルター コンテキスト ボックスあなたが説明した内容に、同様のレイアウトの 2 つの例を添付しました。
SFCrimeNestedFilter.jsl は、データ フィルター コンテキスト ボックスをネストしてフィルター内でカスケード/階層的な動作を実現する方法を示します。このアプローチは JMP 10 以降で機能しますが、タブ ボックスに使用する構文は JMP 13 以降です。
SFCrimeFilterWithWhere.jsl は、各レポートの内部フィルターを Where() 句に置き換えます。このタイプのレイアウトは JMP 14 では機能しますが、以前のリリースでは機能しませんでした。問題は、レポートがサブセット テーブルを使用しているのに、フィルターがテーブル全体を使用していることです。
これがお役に立てば幸いです!
Re: ネストされた/複数のデータ フィルター コンテキスト ボックスこれはまさに私が探しているもののようです! 本当にありがとう! ということは、私の間違いはソースボックスを使用したことだったのでしょうか?Re: ネストされた/複数のデータ フィルター コンテキスト ボックスJim の例では、データ フィルター ソース ボックスは、まさに 1 つの JMP グラフを使用して別の JMP グラフをフィルター処理するために必要なものです。元のスクリプトにはデータ フィルター ソース ボックスがありませんでした。主な問題は、親テーブルのフィルターで Where() 句 (サブセット テーブル) を使用していることであったと思います。
データ フィルター ソース ボックスは、組み込みのデータ フィルター オブジェクトとは異なり、フィルターの動作がどうあるべきかを推測できないため、プラットフォームをフィルターとして使用するだけで済みます。