从交互式图表创建子集?你好。 我正在尝试制作一个交互式图表来显示汇总表中的数据。 目标是创建一个包含点的折线图,可以单击这些点来从该特定点提取数据子集。 例如,在下面的脚本中,我有一个按大类示例表的年龄划分的汇总表的图表。 用户应该能够单击图表上的一个点,并让它自动提取包含该点所有数据的子集表。
我遇到的问题是单击将不起作用,因为尚未选择任何数据。 用户必须双击一个点来选择数据,然后再次单击以运行子集表达式。 有没有一种方法可以做到这一点而无需三次点击? 谢谢。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dtSummary = dt << Summary(
Group( :age ),
Freq( "None" ),
Weight( "None" ),
output table name( "dtSummary" )
);
gbExpr = Expr(
gb = Graph Builder(
Size( 528, 448 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :N Rows ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, [-1], 4, [-1]} ), Position( {-1, -1} )}
)
)
);
);
ExprA = Expr(
dtSubset = dt << Subset( Output Table( "Subset" ), Selected Rows( 1 ), Selected Columns( 0 ));
dtSummary << Clear Selected Rows;
);
GraphWindow = New Window( "Graph" );
GraphWindow << Append(
MouseBox(
gbExpr,
<<SETCLICKENABLE></SETCLICKENABLE>回复:从交互式图表创建子集?在 JMP 15.0 中,子集人民币菜单选项已添加到悬停标签中,其功能与您所描述的完全一致。
现在所有图表都内置了此功能。
我刚刚尝试了一下,结果与运行脚本时的结果完全相同。
请注意,无需创建单独的汇总表 - 新功能“理解”由折线图、条形图等图形完成的聚合。
换句话说,该子集基于从指针下的可视元素的定义导出的本地数据过滤器。
该技术还支持创建 graphlet 并在新窗口中启动它们(也称为向下钻取)。
欲了解更多详情,请查看https://www.jmp.com/content/dam/jmp/documents/en/support/jmp15/using-jmp.pdf ,第 512 页。

回复:从交互式图表创建子集?鼠标盒的替代方法是将行状态处理程序应用于数据表。 只需单击一次即可创建子集(如果尝试通过拖动来选择多个点,这可能会很烦人,因为可能会创建大量意外的子集)。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dtSummary = dt << Summary(Group(:age));
gbExpr = Expr(
gb = Graph Builder(
Show Control Panel(0),
Variables(X(:age), Y(:N Rows)),
Elements(Points(X, Y, Legend(3)), Line(X, Y, Legend(4)))
)
);
ExprA = Expr(
dtSubset = dt << Subset(Selected Rows(1));
dtSummary << Clear Select;
);
f = Function({a}, ExprA);
rs = dt << make row state handler(f);
GraphWindow = New Window("Graph", gbExpr);
回复:从交互式图表创建子集?完美的。 很有帮助。非常感谢。
回复:从交互式图表创建子集?在完成创建使用鼠标陷阱的脚本的所有工作时,我认为如果您愿意使用默认的鼠标操作来选择数据点,然后只需单击,您就可以使用一个非常简单的脚本来完成您想要的任务在添加的按钮上进行选择

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);
subsetButton = Button Box( "Click to Create a Subset of Selected Points",
If( N Rows( dt << get selected rows ) > 0,
dt << subset( selected rows( 1 ), selected columns( 0 ) )
)
);
Report( gb )["Graph Builder"] << append( subsetButton );