回复:懸停標籤:發送更精確的過濾器?腳本指南 > 腳本圖 > 懸停標籤 > 使用懸停標籤執行上下文對 hoverlabels 真的很有幫助
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Variables(X(:sex), Y(:age), Color(:name)),
Elements(Points(X, Y, Legend(19))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Textlet(
Setup(
local:encodedWhere = XML Encode(local:_where);
Show(Namespace("local") << Get Contents());
),
Markup(
"
<B>Groupings</B>: {local:_groupings}
<B>Measurements</B>: {local:_measurements}
<B>Summary statistic</B>: {local:_summaryStatistic}
<B>Filter columns</B>: {local:_filters}
<B>Where clause</B>: {local:encodedWhere}
<B>Graph type</B>: {local:_displaySegName}
<B>Data table</B> {local:_dataTable}
<B>Drill depth</B>: {local:_drillDepth}
<B>First Row</B>: {local:_firstRow}
<B>Underlying Rows</B>: {local:_underlyingRows}
"
)
)}
)
)
);
如果你運行它並查看日誌,你應該能夠訪問名稱值
Namespace("local") << Get Contents() = {{"_filters", {:sex, :age}}, {"_mode", "Textlet"}, {"_where", ":sex == \!"F\!" & :age == 16"}, {"_age", 16}, {"_name", "MARION"}, {"_sex", "F"}, {"_groupings", {:sex, :age}}, {"_firstRow", 36}, {"_underlyingRows", 1}, {"_measurements", {}}, {"_displaySegName", "MarkerSeg"}, {"_dataTable", DataTable("Big Class")}, {"_summaryStatistic", ""}, {"_drillDepth", 1}, {"_xaxis", 0}, {"_yaxis", 0}, {"_customData", [=>]}, {"_localDataFilter", "Local Data Filter(
Close Outline(1),
Add Filter(columns(:sex, :age), Where(:sex == \!"F\!"), Where(:age == 16))
)"}, {"_whereExpr", :sex == "F" & :age == 16}, {"encodedWhere", ":sex == "F" & :age == 16"}};
但我不確定您是否可以(輕鬆地)在繪圖儀圖中強制使用名稱過濾器。 您可以使用 Skip Filter 刪除過濾器,但不知道如何添加它們腳本指南 > 腳本圖形 > 懸停標籤 > 使用 Graphlets 添加圖形或圖像到懸停標籤. 子集解決方法是一種選擇
疊加可以讓你過濾到那個級別,但這並不是很有幫助,因為你不能將鼠標懸停在那個單一的點上......
回复:懸停標籤:發送更精確的過濾器?我是說:
我可以向擁有 30 天試用許可證的同事展示一個解決方案 - 讓他們相信 Jmp 非常有用而且非常簡單。

回复:懸停標籤:發送更精確的過濾器?改編代碼Hover-graphlet-from-another-data-tabl e#M55890 ,我想它會類似於下面的代碼——但我希望有一個非 JSL(2 次點擊?)版本可用。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mainGB = dt << Graph Builder( Variables( X( :sex ), Y( :age ), Color( :name ) ), Elements( Points( X, Y, Legend( 19 ) ) ) );
Report( mainGB )["Graph Builder", FrameBox( 1 )] << Set Graphlet(
Picture(
getGraphlet = Function( {row},
{gb},
gb = Graph Builder( Variables( Y( :height ) ), Elements( Points( Y, Legend( 6 ) ) ) );
gb << Local Data Filter( Close Outline( 1 ), Add Filter( columns( :name ), Where( :name == :name[row] ) ) );
gb;
);
If( local:_mode == "Click",
New Window( "Wafer Graphlet", getGraphlet( local:_firstRow ) );
Empty();
,
plt = Platform( local:_dataTable, gb = getGraphlet( local:_firstRow ) );
Picture Box( (gb << report)[Picture Box( 1 )] << Get Picture( 0.5 ) );
);
),
Skip Filters( 1 )
);回复:懸停標籤:發送更精確的過濾器?@nascif_jmp ?
懸停標籤:發送更精確的過濾器?我想按照配方從另一個數據表生成懸停圖假如經過@nascif_jmp 。
我面臨的問題可以用單個數據表來重現。
下面的例子看起來非常無聊——“為什麼他想繪製一個點?!?”
...但是當使用兩個不同的數據表時才有意義[帶有中值的主數據表,帶有各個值的懸停圖]:)
當鼠標懸停在數據點上時,我希望將懸停圖限制為與單個數據點完全對應的數據。
我的問題:用於 x 和 y 軸的列未完全描述數據點。 在例子中。
[我在軸上使用性別和年齡,得出每個性別和年齡的多個數據點。]
將鼠標懸停在其中一個數據點上只會按性別和年齡限制懸停圖,但不會限制單個數據點(我可以通過名稱等獲取)。
那麼,如何在不影響主圖的情況下獲得 x/y 軸之外的數據點的更精確規範?
我嘗試使用顏色或大小,但這些設置只是被懸停標籤框架忽略。
有沒有辦法告訴懸停標籤框架將附加的列過濾器通過管道傳輸到懸停標籤 - 而不更改主圖?
2分而不是1分單點[對應懸停標籤中的條目網格:馬里恩,F,16]:

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );<BR />dt << Graph Builder(
Variables( X( :sex ), Y( :age ), Color( :name ) ),
Elements( Points( X, Y, Legend( 19 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Graph Builder(
Variables( Y( :height ) ),
Elements( Points( Y, Legend( 6 ) ) )
)
)
)}
)
)
)
大規模定制回复:懸停標籤:發送更精確的過濾器?好的。這比我發給你的還要好。我也學到了一些東西。順便說一句,您應該在冒號 (:) 之前添加命名空間名稱,或者刪除 _name 前面的冒號。它是本地命名空間中的變量,而不是列。
local:_name
// or simply
_name
回复:懸停標籤:發送更精確的過濾器?比我擔心的容易得多......
我剛剛學到了一個超級酷的技巧@賈森:
通過“限制懸停圖在哪裡”
然後可以從@jthi的調查結果:
https://community.jmp.com/t5/Discussions/Hover-Labels-send-a-more-precise-filter/mp/612705/highlight/true#M81282。
您所要做的就是添加(編輯*)
Where( :name == local:_name )
或者
Where( :name == _name )
*) 但不是其中(:名稱==:_名稱)!
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Graph Builder(
Variables( X( :sex ), Y( :age ), Color( :name ) ),
Elements( Points( X, Y, Legend( 19 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Set Graphlet(
Picture(
Graph Builder(
Variables( Y( :height ) ),
Elements( Points( Y, Legend( 6 ) ) ),
Where( :name == local:_name )
)
)
)}
)
)
);