您使用偏好设置吗?通过文件/首选项,您可以更改 Jmp 的标准设置。
非常酷,可以根据您的需要调整 Jmp:)
但我发现了一个微妙的问题——结合自动生成 JSL 代码的功能(保存到脚本、高级日志、仪表板、日志、工作流生成器......)
下面的代码改变了偏好设置,所以 - 如果您想尝试,请三思。
故事:
用户通过文件/首选项调整一些设置(条件和列切换器保留轴设置)
- 然后使用默认设置生成报告(他必须手动执行此操作,没有机会通过增强日志生成代码):
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Set Preferences(
Data Filter Conditional( 1 ),
Column Switcher Retain Axis Setting( 1 )
);
Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
Local Data Filter(
Conditional(0),
Add Filter(
columns( :sex, :name )
)
),
Column Switcher( :weight, {:age, :weight}, Retain Axis Settings( 0 ) )
)然后,他通过 GUI 以交互方式调整报告并保存脚本(使用 JMP 的增强日志功能)。
生成的脚本将如下所示:
Graph Builder(
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
Local Data Filter(
Add Filter(
columns( :sex, :name ),
Display( :name, N Items( 15 ), Find( Set Text( "" ) ) )
)
),
Column Switcher( :weight, {:age, :weight} )
)请注意:
条件(0)->自动删除!
Retain Axis Settings( 0 ) -> removed automatically!
The finding:
Default settings are automatically removed from the code - "因为它们不会对标准系统产生影响".
如果用户使用仪表板内的报告,也会发生同样的情况 - 不会添加默认设置。
现在,用户再次运行代码——想象一下报告会是什么样子……
我可以理解为什么会这样 - 这不是错误,而是一个很酷的功能,Jmp 会自动清理代码以删除不必要的行。
但是如果用户敢于更改偏好设置,那么它绝对会成为一个错误——一个严重的错误!
我目前的解决方法是:只需更改偏好设置,确保你永远不会(!!!)使用默认设置。
这条规则很伤人 - 特别是对于我在 99% 的情况下使用调整后的设置,而在 1% 的情况下使用默认设置的情况。
然后,规则不允许我调整偏好设置。我被迫使用默认设置,并且在 99% 的情况下必须手动调整设置。
有没有更好的解决方案——您在日常工作中如何解决这个问题?
自动化和脚本回复:你使用偏好设置吗?根据 Jmp 支持 (TS-00061254):
这是按设计工作的。
所以:
通过更改首选项中的设置,用户将失去使用 Dashboard Builder 生成仪表板的机会,该仪表板可以使用标准设置在其系统上打开平台:(
解决方法:
打开Dashboard的源脚本并手动添加标准设置的代码。
回复:你使用偏好设置吗?Jmp 支持建议为愿望清单写一篇文章。
这里是:
更改首选项中的设置 -> 修复问题
回复:你使用偏好设置吗?@hogi ,我尝试了你的代码,看看你的意思。更改过滤器和列切换器的首选项,然后使用与首选项默认值(不是当前首选项)匹配的选项来制作报告。然后,保存脚本不会费心包含与默认值匹配的设置,因此脚本不会重现您的报告。您是否正在解释(并且支持声称?)这是有意清除如果您将系统保留为默认首选项则不需要的任何内容? IE。不包括条件(0),因为如果您有默认首选项,则不需要它,即使它当前是相关的?
但这不是我所看到的图形生成器本身的偏好。例如,如果我将图形生成器的首选项更改为不显示标题,然后我创建一个图形生成器并要求(在 JSL 中或事后手动)显示标题,我确实会得到一个包含 showtitle(1) 的脚本。 Conditional(0) 可以被视为一种冗余设置,如果您有默认首选项,则不需要这种设置。我认为我通常看到的是它不包含我当前的首选项不需要的设置。现在我关闭了在我的首选项中显示标题,如果我要求 showtitle(0) 它就不会在脚本中提及这一点。
所以,似乎有两个问题:(1)一个人可能想捕获所有选项,无论它们是否符合您的偏好,(2)在我看来,“获取脚本”类型选项对待过滤器和列切换器的方式与他们对待平台的其余部分。它无法为您提供一个适合您当前偏好的脚本,就像它针对平台偏好所做的那样。我可以理解删除不必要的子句是有意的,但并不是说过滤器的不必要的定义与 settitle() 的不同。?
2.对我来说,这似乎是一个错误,它消除的东西不是因为与当前首选项相同,而是因为与默认值相同。
1. 似乎它确实与我关于使用千位分隔符的愿望清单项类似( 使用 JSL 询问使用千位分隔符 - JMP 用户社区),其中也许一种解决方案可以是返回更详细脚本的选项,而不是返回更详细的脚本不要仅仅因为“与偏好相同”而消除任何内容。
太好了,现在我的偏好都搞砸了......:)
回复:你使用偏好设置吗?100%同意:)
尤其是
-我可以理解删除不必要的条款是有意的
- 但这并不是说过滤器的不必要定义与 settitle() 的定义不同。?
还有许多其他设置的行为类似于列切换器和数据过滤器 - 甚至是直接影响图形生成器的设置:
如果您在首选项中更改摘要统计、图形间距等的默认设置,则所有自动生成的 JSL 代码都将包含以下部分:
统计汇总(“中位数”),
图形间距( 4 )
...直到您尝试将其设置回默认值。如果您使用默认设置,这些设置将不会显示在生成的 JSL 脚本中 - 存在类似“条件”的问题:没有机会使用默认设置自动生成 JSL 代码。
回复:您使用偏好设置吗?由于
- 删除“不必要的”条款
- 编写所有设置,使得在任何系统上结果都是相同的 - 独立于当前设置。
那么,详细(0)、详细(0.3)、详细(0.5)、详细(0.7)、详细(1)怎么样?
- 0:删除所有“不必要的”代码,如现在 - 兼容模式
- 0.3:生成在此系统上生成相同结果所需的所有 JSL 代码。[修复了条件问题]
- 0.5:生成在默认系统上生成相同结果所需的所有 JSL 代码。[修复了用户定义渐变设置的问题]
- 0.7:基于过去 6 个月生成的图表/报告,包括所有更改次数 >=3 次的设置。生成对所有设置都稳健的代码。
- 1:JSL 代码可以抵御偏好设置中的任何设置。
0.7:超级有用 - 我的最爱!
- 谁会关心额外的 5 行代码 - 如果它们能在您同事的任何系统上生成更为稳健的结果。
- 您多久生成一次连接,然后后来想知道附加到主表(1)的确切措辞?
回复:您会使用偏好设置吗?一位同事发现了一个很好的例子,展示了由图形生成器中不同设置冲突引起的类似错误:
如果上级应用了非标准设置,则用户不得将某个设置定义为标准设置。
在图形生成器中,有一个用于控制坐标轴设置的控件——在坐标轴设置中,还有一个用于控制参考线的控件。
参考线似乎继承了坐标轴设置的字体设置。
删除继承设置的唯一方法是:应用非标准设置,从而覆盖继承的设置。
难以解释,但很容易“体验”:
标签“standard”的文本应该是“standard”,而不是粗体——运行代码试试看:

dt = new table("test", new column ("X"));
Graph Builder(
Size( 469, 260 ),
Graph Spacing( 4 ),
Variables( X( :X ) ),
Elements( Points( X, Legend( 2 ) ) ),
SendToReport(
Dispatch( {}, {:X}, ScaleBox,
{Min( 0 ), Max( 50 ), Inc( 10 ), Minor Ticks( 1 ),
Add Ref Line(
20,
"Solid",
"Black",
"italic",
1,
1,
Label Settings( {Set Font Style( "Italic" )} )
), Add Ref Line( 30, "Solid", "Black", "standard", 1 ),
Label Row( Set Font Style( "Bold" ) )}
)
)
);
类似的问题也出现在首选项和自定义设置中。一旦首选项中的某个设置与标准设置不同,用户就必须使用首选项中的设置。几乎不可能强制报表使用标准设置,尤其是在报表被修改并保存脚本之后。这时,“重置为标准设置”的功能就失效了。
参考线的情况更糟:完全没有机会重置设置?
回复:您会使用偏好设置吗?图表构建器中的标记和颜色设置也存在类似的冲突:
调整标记设置的方法有很多种:
- 各行的行状态
- 在图表构建器中,通过图例菜单设置标记
- 首选项菜单中的全局标记设置
JMP 19 目前无法通过列属性“值标记”来控制标记设置 -> 请点击链接投票!
问题如下:
通过图例菜单进行的设置会覆盖行状态中的设置。
默认标记是个例外。如果在图例菜单中选择了标准标记,JMP 会假定用户想要“重置”设置,因此该命令将被“忽略”,行状态中的标记设置将再次生效。唯一能够“对抗”行状态的方法是指定一个特殊的标记。无法使用“默认标记”覆盖行状态。
Similarly, settings via the legend menu override the settings in the 偏好.
The exception is again the default marker. If the setting is switched to the standard marker, JMP assumes that the user wants to 'reset' the settings, so the preferences will be activated again. Consequently, one must assign a 非标准标记 to override the settings in the preferences. It is not possible to overrule marker settings from the preferences with a 'default marker': In the vide, the user selects "dot" - and Graph Builder uses "FilledSquare" (from the preferences).
My recommendation: don't touch the marker setting in the preferences!!
颜色也同样如此:
无法将行状态颜色替换为黑色(默认颜色)。
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch( {}, "Graph Builder", FrameBox, {Marker Size( 10 ), Marker Drawing Mode( "Outlined" )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {1, [2, 3], 2, [0, 1]} )} )
)
);
wait(2);
// Set selected rows' markers
dt << Clear Select << Select Rows( [5] ) << Markers( "Circle" );
wait(2);
// please go to the preferences and set it back after running this code:
Set Preferences( Graph Marker( "FilledSquare" ));