回复:悬停标签:发送更精确的过滤器?脚本指南 > 脚本图 > 悬停标签 > 使用悬停标签执行上下文对 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 )
)
)
)}
)
)
);