本機資料過濾演算法(例如,Graphlet)Graphlet 非常酷!
本地資料過濾器很棒。 它會自動調整圖基元的資料以符合主圖的子群組。
JSL 是否有調整此濾鏡的功能?
我已經找到了
Skip Filters()
在納斯西夫的貼文中將滑鼠懸停在另一個資料表中的 graphlet
它會刪除過濾器中未使用的部分,以便過濾器也可以用於其他表,而不會發出警告訊息。
有沒有詳細說明其工作原理的文件?
還有 JSL 函數來新增或交叉過濾器嗎?
應用案例:
如果我產生帶有過濾器的圖表(Bif 類別圖僅限於年齡 = 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 ) ) )
)
)
並將其用作懸停標籤(透過“儲存腳本”-“懸停標籤”/“貼上 Graphlet”)...
本機資料過濾器仍然存在於 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 ) ) )
)
)
)}
)
)
);
但它的功能會自動被懸停標籤擴展框架中的本地數據過濾器取代(所有年齡段都可見):

因此,如果有一個「合併」功能來將手動本地資料過濾器與懸停標籤擴展框架中的過濾器結合起來,那就太好了。
內容組織回覆:本機資料過濾演算法(例如 Graphlet)這就是一個解決方案!
懸停標籤擴展框架本地資料過濾器處理沒有機會逃脫。
回覆:本機資料過濾演算法(例如 Graphlet)可能需要為此使用額外的數據表
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();回覆:本機資料過濾演算法(例如 Graphlet)啊,“添加過濾器”添加了一個新的“OR”組 - 我錯過了這個細節:

因此,我們只需要一個解決方案來修復懸停標籤中的微型圖。
嗯...
回覆:本機資料過濾演算法(例如 Graphlet)我認為如果您以其他方式修改腳本,後一個也應該可以工作(就像我說的,我只是用蠻力讓它工作)。 如果我要清理它,第一次迭代可能會是這樣的,我首先應用懸停標籤中的過濾器,然後添加其他過濾器
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">回覆:本機資料過濾演算法(例如 Graphlet)</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>-> 令人驚訝的是產生了兩個不同的圖表。 使用不同的方式覆蓋本地資料過濾器?<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));
添加相同的過濾器,但沒有任何效果?
回覆:本機資料過濾演算法(例如 Graphlet)您可以編寫此腳本,但如果能夠選擇合併本機資料篩選器,那就太好了。 這段程式碼可以變得更簡潔,但我只是暴力破解它
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));
),
)}
)
)
);