我正在尝试自动创建 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);
);