ローカル データ フィルター演算 (Graphlets など)グラフレットはとてもクールです!
ローカル データ フィルターは優れています。 グラフレットのデータを自動的に調整して、メイン グラフのサブグループに一致させます。
このフィルタを調整するJSL関数はありますか?
私はすでに見つけた
Skip Filters()
ナシフの投稿で別のデータ テーブルからグラフレットにカーソルを合わせる
フィルターの未使用部分を削除して、フィルターが警告メッセージなしで他のテーブルでも機能できるようにします。
それがどのように機能するかについての詳細なドキュメントはありますか?
フィルタを追加または交差するJSL関数もありますか?
アプリケーションケース:
フィルターを使用してグラフを生成した場合 ( Bif クラス プロットは age= 14 に制限されています)
Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :age ) ),
Elements( Points( X, Y, Legend( 26 ) ) ),
Local Data Filter(
Add Filter( columns( :age ), Where( :age == 14 ), Display( :age, N Items( 6 ) ) )
)
)
そしてそれをホバーラベルとして使用します(「スクリプトの保存」-「ホバーラベル」/「グラフレットの貼り付け」を介して)...
ローカル データ フィルターは、JSL スクリプトにまだ存在します。
Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Variables( X( :sex ) ),
Elements( Bar( X, Legend( 3 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Graph Builder(
Size( 422, 474 ),
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :age ) ),
Elements( Points( X, Y, Legend( 26 ) ) ),
Local Data Filter( Add Filter( columns( :age ), Where( :age == 14 ) ) )
)
)
)}
)
)
);
ただし、その機能は、ホバー ラベル拡張フレームワークのローカル データ フィルターに自動的に置き換えられます (すべての年齢層が表示されます)。

そのため、手動のローカル データ フィルターと Hover Label Extension Framework のデータ フィルターを結合する "マージ" 機能があると便利です。
グラフィックスクリプティングRe: ローカル データ フィルター演算 (Graphlets など)それは解決策です!
ホバー ラベル拡張フレームワークのローカル データ フィルター処理がエスケープされる可能性はありません。
Re: ローカル データ フィルター演算 (Graphlets など)そのために追加のデータテーブルを使用する必要があるかもしれません
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
If( Is Empty(dt1),
dt1 = dt << Subset(All Rows, Selected Columns(0), invisible);
);
dt1 << Clear Row States;
filter_expr = Expr(And());
Insert Into(filter_expr, Name Expr(_whereExpr));
Insert Into(filter_expr, Name Expr(:age == 14));
Insert Into(filter_expr, Name Expr(:height >= 55 & :height <= 70));
Eval(EvalExpr(dt1 << Select Where(!filter_expr)));
dt1 << Hide and Exclude(1);
gb_expr = EvalExpr(dt1 << Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26))),
Local Data Filter(
Grouped by AND(1),
Add Filter(columns(:sex), Where(Expr(NameExpr(_whereExpr)))),
Add Filter(columns(:age), Where(:age == 14), Display(:age, N Items(6))),
Add Filter(columns(:height), Where(:height >= 55 & :height <= 70))
)
));
gb_expr;
),
Click(
dt1 << Clear Row States;
gb2 = gb_expr;
Eval(EvalExpr(gb2 << On Close(
Try(Close(Expr(dt1), no save));
)));
)
)}
)
)
);
Write();Re: ローカル データ フィルター演算 (Graphlets など)ああ、「フィルターを追加」すると新しい「OR」グループが追加されます - この詳細を見逃していました:

したがって、ホバー ラベルのミニチュア グラフを修正するソリューションが必要なだけです。
うーん...
Re: ローカル データ フィルター演算 (Graphlets など)スクリプトを別の方法で変更すると、後者も機能するはずです(私が言ったように、私はそれを機能させるために強引に働きました)。 私がそれをクリーンアップするとしたら、その最初の反復は、最初にホバーラベルからフィルターを適用してから追加のフィルターを追加する、おそらく次のようなものになるでしょう
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Local({gb, f},
gb = Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26)))
);
Eval(EvalExpr(
f = gb << Local Data Filter(
Add Filter(
columns(expr(_filters)), Where(expr(NameExpr(_whereExpr)))
)
)
));
//f << Conditional(1);
f << Grouped By And(1);
f << Add Filter(Columns(:age), Where(:age == 14));
f << Add Filter(Columns(:height), Where(:height >= 55));
)
),
)}
)
)
);
Write();
</CODE></P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-525478" slang="en-US" mode="NONE">Re: ローカル データ フィルター演算 (Graphlets など)</LINGO-SUB><LINGO-BODY id="lingo-body-525478" slang="en-US" mode="NONE"><P>こんにちは、ジャルモです。<BR /> JSL スニペットに感謝します - そこから学ぶことはたくさんあります...</P><P> </P><P>それは面白いです:</P><OL><LI>ローカル データ フィルターがグラフ ビルダー パーツ (私のコード) 内に作成されている場合、ホバー ラベル拡張フレームワークのローカル データ フィルターによって上書きされます。</LI><LI>グラフ ビルダー (コード) の後にローカル データ フィルターを作成すると、ホバー ラベル拡張フレームワークのローカル データ フィルターが上書きされます。 *)</LI></OL><P> </P><P>*) よく見ると:</P><P>これは、ホバー ラベルのミニチュア グラフをクリックした後に開くグラフに当てはまります。<BR />ミニチュア グラフ自体はまだすべての年齢を示しているため、ケース 1)</P><P>-> 生成された 2 つの異なるグラフがあるのは驚くべきことです。 ローカル データ フィルターを上書きするさまざまな方法がありますか?<BR /><BR /></P><P>最後の質問:<BR />さまざまなローカル データ フィルター関数を説明するチュートリアルはありますか。<BR />たとえば、なぜ使用する必要があるのですか</P><PRE><CODE class=" language-jsl">f << (Filter Column(:age) << Where(::age == 14));
なぜ
f << Add Filter(Columns(:age), Where(::age == 14));
同じフィルターを追加しますが、効果はありませんか?
Re: ローカル データ フィルター演算 (Graphlets など)これをスクリプト化することはできますが、ローカル データ フィルターをマージできるオプションがあれば間違いなく便利です。 このコードはよりきれいにすることができますが、私は力ずくで実行しただけです
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex)),
Elements(Bar(X, Legend(3))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
gb = Graph Builder(
Size(422, 474),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Overlay(:age)),
Elements(Points(X, Y, Legend(26)))
);
Insert Into(_filters, Name Expr(:age));
Eval(Substitute(
Expr(
f = gb << Local Data Filter(Add Filter(
columns(_col_list_), Where(_wheres_)
))
),
Expr(_col_list_),
_filters,
Expr(_wheres_),
Parse(_where)
));
f << (Filter Column(:age) << Where(::age == 14));
),
)}
)
)
);