我正在嘗試自動創建 JMP 圖表。 我一直在使用以下內容作為指南:從數據導入到發布的自動化報告創建 2019
我已經到了可以創建所有圖表的地步。 現在我正在努力保存它們,但很難確定如何保存。 我正在生成一個 P Chart 報告,該報告按基礎數據表中的某個值分組。 該報告帶有多個 P 圖表,每個值對應一個組。 我想將每個單獨保存到一個單獨的 HTML 頁面。 因此,例如,如果我有一份按“行星”分組的報告,並且該報告有每個行星的圖表,我想要一個包含每個行星圖表的 HTML 頁面,而不是一個包含所有行星的單一 HTML 頁面。 這是否可能,如果可能,如何。 附件是我的示例腳本。
planetQ = New SQL Query(
Connection(
"CONNECTION INFO HERE"
),
QueryName( "ON_TIME_SPC_PLANET" ),
Select(
Column( "ReleaseMonth", "t1", Numeric Format( "m/d/y", "-1", "NO", "" ) ),
Column( "PLANET", "t1" ),
Column(
"On-Time",
"t1",
Alias( "Sum-On-Time" ),
SavedJMPName( "On-Time" ),
Aggregation( "Sum" ),
JMP Name( "Sum-On-Time", 0 )
),
Column(
"Total",
"t1",
Alias( "Sum-Total" ),
SavedJMPName( "Total" ),
Aggregation( "Sum" ),
JMP Name( "Sum-Total", 0 )
),
Column( "Phase", "t1", Analysis Type( "Nominal" ) )
),
From( Table( "ON_TIME_SPC", Schema( "dbo" ), Alias( "t1" ) ) ),
Group By(
Column( "ReleaseMonth", "t1", Numeric Format( "m/d/y", "-1", "NO", "" ) ),
Column( "PLANET", "t1" ),
Column( "Phase", "t1" )
),
Order By(
Column(
"ReleaseMonth",
"t1",
Numeric Format( "m/d/y", "-1", "NO", "" ),
Order( "Ascending" )
)
)
) << Run Foreground();
planetQ << New Column( "OnTimePct",
Formula( :Name( "Sum-On-Time" ) / :Name( "Sum-Total" ))
);
wait(1.0);
current data table(planetQ);
planetP = Control Chart(
Sample Label( :ReleaseMonth ),
Phase( :Phase ),
Sample Size( :Name( "Sum-Total" ) ),
KSigma( 3 ),
Chart Col( :OnTimePct, P( Phase Level( "1" ), Phase Level( "2" ) ) ),
By( :PLANET )
);
“ccb”的好消息。 這是問題的一部分。 另一個問題是使用“控製圖生成器”。 我將其更改為“控製圖”並且它有效。 新問題是生成的文件名。 我看到你用過:
thistitle = firstOB << getTitle;
這給了我一個標題名稱:“Control Chart name=XXXXXXX”
1. 我猜想通過使用 saveHTML,我可以附加 .html,因為它是在沒有擴展名的情況下保存的。
2.我怎樣才能得到XXXXXX部分? 我是否必須事先知道它總是“Control Chart =”然後操作該字符串值,還是有更簡單的方法? JMP 中是否有字符串操作函數?
我懷疑這是圖表類型的問題。 但我注意到您已將 Control Chart Builder 中的多個 p 圖的引用分配給“ppnP”,但後續代碼仍然引用“ccb”(如我在示例中使用的那樣)。
我試過以下方法,但運行不正常:
當前數據表(ppn);
ppnP = ppn << Control Chart Builder(
Sample Label( :ReleaseMonth ),
Phase( :Phase ),
Sample Size( :Name( "Sum-Total" ) ),
KSigma( 3 ),
Chart Col( :OnTimePct, P( Phase Level( "1" ), Phase Level( "2" ) ) ),
By( :name )
);
// Save the report for each level of the 'By' variable
For( c = 1, c <= N Items( ccb ), c++,
// Get the current report layer
thisrep = Report( ccb[c] );
// Get the first outline box
firstOB = thisrep[Outline Box( 1 )];
// Get the title of this outline box
thistitle = firstOB << getTitle;
// Save as HTML
firstOB << saveHTML( "$DESKTOP/" || thistitle );
);
我收到如下的單個報告(注意:我塗黑了信息)並且沒有任何內容以 html 格式保存到桌面目錄。 我正在創建 P 圖表,所以不知道這是否是此過程的問題。

這是您應該能夠適應的示例:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Run the platform. NB: ccb is a list, because of teh use of the 'By' variable
ccb = dt << Control Chart Builder(
Show Control Panel( 0 ),
Show Limit Summaries( 0 ),
Show Capability( 0 ),
Variables( Y( :height ) ),
By( :sex)
);
// Save the report for each level of the 'By' variable
for(c=1, c<=NItems(ccb), c++,
// Get the current report layer
thisrep = Report(ccb[c]);
// Get the first outline box
firstOB = thisrep[OutlineBox(1)];
// Get the title of this outline box
thistitle = firstOB << getTitle;
// Save as HTML
firstOB << saveHTML("$DESKTOP/"||thistitle);
);