大家好!我遇到一个客户提出的难题,把我难住了——我觉得应该很简单,但却怎么也解决不了。问题如下:让平行图在图表上显示分类因子每个水平的成员数量。下面的脚本使用示例数据生成了一个平行图,目标是让图表生成器自动在左侧条目旁边添加“20”。
在将此功能作为功能请求提交之前,大家有什么想法?
Names Default To Here( 1 );
Clear Log();
dt = Open( "$Sample_Data/Discovery US 2018 Survey.jmp" );
dt << Graph Builder(
Size( 1231, 567 ),
Show Control Panel( 0 ),
Fit to Window( "On" ),
Variables(
X( :Handedness ),
X( :Analysis, Position( 1 ) ),
X( :BBQ, Position( 1 ) ),
X( :Pie, Position( 1 ) ),
X( :Discoveries, Position( 1 ) ),
X( :OS, Position( 1 ) ),
X( :Age, Position( 1 ) ),
X( :Usage, Position( 1 ) ),
X( :Boy Band, Position( 1 ) ),
X( :DGA, Position( 1 ) ),
X( :Type, Position( 1 ) )
),
Elements(
Parallel(
X( 1 ),
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
X( 8 ),
X( 9 ),
X( 10 ),
X( 11 ),
Legend( 6 ),
Combine Sets( 1 )
)
)
);
不知道是否有内置方法可以实现这一点,但或许可以使用悬停标签;添加了一个新列和一个悬停标签,用于显示惯用手分布情况。
Data Table( "Discovery US 2018 Survey.jmp" ) <<
New Column( "first", Character, "Nominal", <
<SET initial="" data="https://community.jmp.com/"></SET>
比我尝试的要好得多——但他们希望悬停标签能够反映光标当前所在组的计数。(唉……)……看来得把这个添加到愿望清单里了……
你可以在图表构建器的列列表中手动创建一个新的转换列。但是要为每一列都这样做,真是太麻烦了。这有点像个临时方案,需要重复很多操作,但或许可行,而且或许可以编写脚本来实现。我尝试使用新的作用域功能来使公式更通用,但没有找到解决方案。你或许能找到更好的方法。
Jed_Campbell_0-1787153025134.pngJed_Campbell_0-1787153025134.pngJed_Campbell_0-1787153025134.pngJed_Campbell_0-1787153025134.png
这是最接近的方案了……不过,对于很多列来说,这确实很繁琐。我已经在愿望清单里提了个请求——如果你觉得合适,请点个赞!: 在图表生成器中为平行图添加计数标签。
这并不能解决根本问题(很高兴你把它添加到愿望清单中——这对用户来说应该很容易,无需额外工作),但我想提一下,多列公式(18 版引入)可以让你一次性创建@Jed_Campbell建议的所有公式列(在很多情况下都很有用):
- 在表格中选择所有要添加公式的列 > 右键单击 > 公式
- 选择“一起”即可一次性为它们生成一个公式。
Screenshot 2026-08-26 at 7.43.05 AM.png Screenshot 2026-08-26 at 7.43.05 AM.png
- 设计您的公式,并使用列集区域中的 _relative_from_COL 动态列引用。
Screenshot 2026-08-26 at 7.46.42 AM.png Screenshot 2026-08-26 at 7.46.42 AM.png
这样,每次为选定的列创建公式时,都会替换列引用。例如,对于 OS 2 生成的列,公式如下:
Screenshot 2026-08-26 at 7.51.15 AM.png Screenshot 2026-08-26 at 7.51.15 AM.png
朱尔斯
谢谢你,朱尔斯!这真的很有帮助。我完全忘了还有这个功能。