我有一个脚本,它使用双变量平台生成离散时间单位的数据图(例如 2021 年第一周的 202101)。 使用的时间单位是不可协商的,并且如果被视为连续,则不能正确间隔:202052 和 202101 之间的距离将与 202101 和 202102 之间的距离不同,但这些距离应该相同,因为它们是连续的周。 我的解决方案是创建一个值为 1,2,3,... 的“序列”列,并将其与 202052, 202101, 202102, .... 配对,并将值标签应用到“序列”列(1 具有值标签 202052,2 的值标签为 202101,3 的值标签为 202102),然后使用“序列”列作为 Fit Y by X 中的 X。 这个解决方案工作得很好,除了当我记录输出时:值标签不成立,并且日志中的绘图恢复为序列列中的原始值,而不是使用值标签。 每隔一段时间,值标签就会传输到日志,但在我保存并重新打开后,x 轴值已恢复为原始值。 我相信区别在于使用脚本或 ctrl + J 来记录(暂时保留值标签)与复制 --> 粘贴到日记(不保留值标签)。
我也许可以找到另一种方法来做到这一点,或者也许有人可以建议另一种方法,但我更感兴趣的是知道值标签不从报表窗口传输到日记帐是否是预期的 JMP 行为。 此行为在 JMP 的未来版本中是否会改变?
我使用的是 JMP Pro 14.3.0。 我已确认 JMP Pro 15.2.1 中也出现此问题。 下面是重新创建问题的示例脚本。
// Data Table
dt = New Table( "Label Example",
Add Rows( 6 ),
New Column( "Week", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [202052, 202052, 202101, 202101, 202102, 202102] ) ),
New Column( "Sequence", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 1, 2, 2, 3, 3] ) ),
New Column( "Value", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [12, 39, 9, 1, 22, 9] ) ),
New Column( "Group", Character, "Nominal", Set Values( {"A", "B", "A", "B", "A", "B"} ) )
);
week_list = :Week << get values;
sequence_list = :Sequence << get values;
week_list_names = {};
// Build the Value Labels List
For( i = 1, i <= N Items( week_list ), i++,
If( !Contains( week_list_names, Parse( "\!"" || Char( sequence_list[i] ) || "\!" = \!"" || Char( week_list[i] ) || "\!"" ) ),
Insert Into( week_list_names, Parse( "\!"" || Char( sequence_list[i] ) || "\!" = \!"" || Char( week_list[i] ) || "\!"" ) )
)
);
:Sequence << Data Type( Character );
:Sequence << Value Labels( week_list_names );
:Sequence << Data Type( Numeric ) << Modeling Type( Continuous );
value_by_week = Bivariate(
Y( :Value ),
X( :Sequence ),
Fit Where( :Group == "A", Fit Each Value( {Line Color( {212, 73, 88} )} ) ),
Fit Where( :Group == "B", Fit Each Value( {Line Color( {66, 112, 221} )} ) ),
SendToReport(
Dispatch( {}, "Bivariate Fit of Value By Sequence", OutlineBox, {Set Title( "Bivariate Fit of Value By Sequence" )} ),
Dispatch( {}, "1", ScaleBox, {Inc( 1 ), Minor Ticks( 0 ), Label Row( Show Major Grid( 1 ) ), Label Row( Label Orientation( "Angled" ) )} ),
Dispatch( {}, "2", ScaleBox, {Inc( 10 ), Minor Ticks( 5 ), Label Row( Show Major Grid( 1 ) )} ),
Dispatch( {}, "Sequence", TextEditBox, {Set Text( "Week" )} )
)
);
value_by_week_rep = value_by_week << Report;
my_jrn = New Window( "Test Journal", <<JOURNAL></JOURNAL>您可以选择从 x 列中提取年份和周值并将其转换为时间戳。 然后,如果你把它放在 x 轴上,它会自动正确地间隔,如果你调整 x 轴的格式,你可以让它显示你喜欢的日期。
有趣的! 我从来没有想过尝试这样做,但“在新窗口中重新运行”也对我有用。 我很高兴该问题在 JMP 16 中得到了解决。 在我开始安装之前,这是一个可以接受的解决方法。 感谢你的分享。
我在 JMP 15.2 中复制了您的错误。它似乎已在 JMP 16 中修复。
你好@drew_baumgartel ,
使用您的示例脚本时我看到了相同的行为。
但是,如果您转到红色三角形并选择在新窗口中重新运行,我就能够看到值标签。
Rerun in new windowRerun in new window在新窗口中重新运行
results after rerunning in new windowresults after rerunning in new window在新窗口中重新运行后的结果
干杯,
斯坦