在某些会议中@朱利安我学习了如何通过在单元格周围添加一些边框来使热图更具吸引力。
其他选项(例如图案)可以通过左侧的控制面板进行控制。

不幸的是,这不是 - 它必须通过右键单击图表/自定义来应用... - 并分别针对每个子图。

一方面,这很好,因为每个子图都可以单独配置 - 另一方面:这可能需要一些时间。
如果有多个打开的子图,如何一次更改所有子图 - 以及如何更改设置,以便(当更新数据表并且出现新子图时)新子图以 linewidth=1 开头?
大多数此类右键单击命令都可以通过按 CTRL 键将其广播到所有子图。
但对于自定义...这似乎不可能。
一个技巧是通过从 X/Y 组、换行/页面中删除列来删除所有子图,应用 LineWidth,然后再次将列添加到相应的 DropZones。 但这需要一些时间。
另一个技巧:
通过 JSL 将命令发送到当前 Graph 的所有 FrameBox。
但是当新的子图出现(没有边框)时仍然存在问题。
有人使用带有单元格边框的热图吗? 以及建议如何方便使用?

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 454, 256 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Summary Statistic( "Median" ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Group X( :sex ), Overlay( :sex ) ),
Elements( Heatmap( X, Y, Legend( 3 ), Bin Shape( "Hexagonal" ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( HexSeg( 1 ), Line Width( 1 ) )}
)
)
)
也许自定义复制+粘贴在这种情况下有效? 右键单击图表 -> 编辑 -> 复制自定义。 然后转到其他框架并进行相同的操作,但粘贴自定义(我认为您也可以使用 Ctrl 来广播此内容)。
你好@hogi ,
你提到一种选择是:
通过 JSL 将命令发送到当前 Graph 的所有 FrameBox。
如果我不知道 X 组值是多少,我该怎么做?
我想我可以通过向框架盒发送一条消息来做到这一点,如下所示(其中 gb1 是对图形生成器的引用):
bordercode = "HexSeg( 1 ), {Line Width( 1 )}";
fnDef = Expr(
(gb1 << xpath( "//FrameBox" )) << DispatchSeg( __aa__ )
);
Substitute Into( fnDef, Expr( __aa__ ), parse( bordercode ) );
Parse( fnDef );但我收到以下错误:
Unexpected ",". Perhaps there is a missing ";" or ",".
Line 1 Column 13: HexSeg( 1 )►, {Line Width( 0.5 )}
The remaining text that was ignored was
,{Line Width(0.5)}所以我认为我的消息格式不正确。 我尝试过各种组合,有或没有“解析”等,但没有运气。
感谢您的任何建议!
fbs =current report() << xpath( "//FrameBox" );
fbs << {DispatchSeg( HexSeg( 1 ), Line Width( 1 ) )}