大家好,
在 Windows 11 机器上运行 JMP/JMP Pro。
我很好奇如何解决一种非常特殊的问题——并且自动解决(而不是手动解决)。例如,我使用 Air.jmp 样本数据表来显示当前的问题。我已附上脚本文件的副本来显示问题。
我有一个数据表,每天(有时是每周)向其中添加数据,并且我在数据表中有一个内置脚本来绘制数据与日期的关系。为了模拟这一点,我将 Air.jmp 数据表分成两半,制作了图形生成器图形,然后将“新”(数据的后半部分)连接到另一个表的前半部分,然后重新运行脚本。
理想情况下,我希望获得一个输出,其中图形生成器日期 x 轴自动缩放到最近的日期,如下所示:

相反,我得到的图表只更新了将图表生成器脚本的最后一个版本保存到数据表时的值。因此,输出如下所示:

当您仅绘制数据点而不修改轴的增量时,不会发生这种情况。此数据集(前半部分)轴上的默认增量为 2 年。添加后半部分数据并重新运行数据表中的脚本后,它会将默认值重置为 5 年并绘制所有数据。
但是,如果您将默认增量更改为 1 个月,并将脚本保存到数据表(前半部分),然后添加新数据并重新运行脚本,它将使轴设置与原始脚本保持相同 - 它不会更新以包含新数据。脚本中最大的区别是 SendToReport 命令:
SendToReport(
Dispatch(
{},
"date",
ScaleBox,
{Min( 1597574016 ), Max( 1925078400 ), Interval( "Month" ), Inc( 1 ),
Minor Ticks( 1 )}
)
)在此命令中,有 Min() 和 Max() 日期设置,它们由原始数据表的现有日期范围修改。我不确定为什么存在此限制,并且没有更新以反映添加到数据表的新日期并重新运行脚本。
有没有办法解决这个问题,同时保持月份间隔,并嵌套 x 轴,以便月份也按年份分组?在向表中添加新数据并重新运行脚本后,我希望新图表使用最新数据表中的 Min() 和 Max() 设置,而不是原始数据表中的设置。
希望有一个简单的解决方案。否则,我想我会提出一个愿望清单请求,要求对此进行更改,以允许轴的 Min() 和 Max() 输入自动通过数据表相关列中的当前值进行更新。
提前感谢您的任何想法/反馈!,
DS
嗨@jthi ,
谢谢,成功了!我更喜欢在图形生成器的 Min() 和 Max() 参数中使用 Expr(Col Min( )) 和 Expr(Col Max( ))。而且,JMP 会帮您在图形的两端进行填充,填充必须以某种方式根据图形的时间尺度进行缩放,因为对于这个数据集,它填充了 366 天。
感谢您及时的回复!,
DS
我认为,如果您不介意情节中的空白处,那么您可以从 sendtoreport 中删除最小值和最大值。
Graph Builder(
Size(522, 456),
Show Control Panel(0),
Graph Spacing(4),
Variables(X(:date), Y(:Ozone Concentration)),
Elements(
Points(X, Y, Legend(3)),
Smoother(
X,
Y,
Legend(4),
Lambda(0.0000231899600250505),
Confidence of Fit(1)
)
),
SendToReport(
Dispatch(
{},
"date",
ScaleBox,
{Interval("Month"), Inc(1),
Minor Ticks(1), Label Row Nesting(2)}
)
)
)

或者其他选择是使用脚本计算它们,然后将它们添加进去(如果 JMP 决定添加空值,您可能仍需要进行一些重新缩放)。
Eval(EvalExpr(
Current Data Table() << Graph Builder(
Size(522, 456),
Show Control Panel(0),
Graph Spacing(4),
Variables(X(:date), Y(:Ozone Concentration)),
Elements(
Points(X, Y, Legend(3)),
Smoother(
X,
Y,
Legend(4),
Lambda(0.0000231899600250505),
Confidence of Fit(1)
)
),
SendToReport(
Dispatch(
{},
"date",
ScaleBox,
{Min(Expr(Col Min(:date))), Max(Col Max(col max(:date))), Interval("Month"), Inc(1),
Minor Ticks(1), Label Row Nesting(2)}
)
)
)
));
