大家好,
在 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)}
)
)
)
));
