在图形生成器 JSL 中使用 PAGE 时如何保存图形?如果我在图形生成器中使用了“PAGE”功能,现在我在同一页面上有多个图形,我如何在循环中一张一张地获取图形生成器图形以将其保存为 png?
这是来自@Craige 的示例代码
dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$temp/myPics" );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
谢谢你。
回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?pptx 文件只是一个伪装的 zip 文件。 如果将扩展名从 .pptx 更改为 .zip(您可能需要更改 Windows 中的文件夹设置以显示已知文件扩展名)。 在 zip 文件中将有一个名为 media 的文件夹,其中包含所有图像。
回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?我用一个循环让它在 powerpoint 上工作。 谢谢温迪回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?谢谢梅兰妮。 我会试试的。回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?Powerpoint 有效,但我不确定您如何从 Powerpoint 中获取图片。
我已经尝试过并幸运地保存为 html。 当您将报告另存为 html 时,所有图片都会保存到名为 gfx 的文件夹中。 如果您反复保存文件,gfx 文件夹不会像 html 页面那样被重写,但所有图片都只是添加到同一个文件夹中。
我有几个版本的这个示例脚本,我们正在处理消息,有时它会单独保存每个图形,有时则不会。 在当前的迭代中,它似乎有效。 如果没有,则有一些代码会保存到 powerpoint,而不是将其注释掉。 看看您是否可以使用更复杂的脚本来完成这项工作。 请注意,最终的 html 页面将只有最后一个 graphbuilder 报告,而不是全部。 在 gfx 文件夹中,我为每个图表获取一张图片,为每个图例框获取一张图片 - 你必须剔除它们。
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
unique lotid = Associative Array(dt:lot_id);
unique Wafer = Associative Array(dt:wafer);
currentid = unique lotid << First;
currentwafer = unique Wafer << First;
For( iwfr = 1, iwfr <= N Items( unique Wafer ), iwfr++,
nextwafer = unique Wafer << Next( currentwafer );
Eval(
Eval Expr(
gb4 = dt << Graph Builder(
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Page( :SITE ),
Group X( :PNP2 ),
Group Y( :NPN2 ),
Color( :lot_id )
),
Elements( Treemap( X, Y, Legend( 24 ), Summary Statistic( "% of Total" ) ) ),
where( Wafer == Expr( currentwafer ) ),
Display( :SITE, Size( 181, 153 ), List Display ),
)
)
);
// powerpoint save
//If( File Exists("$desktop/wow.pptx"), gb4 << Save Presentation( "$desktop/wow.pptx", "Append", "PNG" ),
// gb4 << Save Presentation( "$desktop/wow.pptx", "PNG" )
//);
// html save
gb4 << Save HTML( "$desktop/wow.html", "PNG" );
gb4 << Close Window;
currentid = unique lotid << First;
);回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?是的,脚本索引中有一个示例。
- 单击“帮助”菜单并选择“脚本索引”。
- 进入保存演示文稿在搜索框中。
脚本索引提供语法、简要说明和示例脚本保存演示文稿. 为了您的方便,我附上了窗户的图像。
祝你的脚本项目好运!
温迪
回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?我想我可以解决这个问题,
获取幻灯片只是一行脚本吗?
谢谢温迪回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?使用 Page(),完整的图形不会存储在可以保存到单个 PNG 文件的单个 DisplayBox 中。 导出到 PowerPoint 文件会破坏页面。 否则,您将需要使用本地数据过滤器、Where() 或 By()。
温迪
回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?嗨,温迪,
感谢您提出使用 By 的想法。 我想要 PAGE 功能的原因是,它给了我一个锁定比例的选项,我可以显示所有,而不仅仅是选择的那个。
有没有办法使用 PAGE 函数访问不同的图形来绘制? 这真的很有帮助。
太感谢了。
回复:在图形生成器 JSL 中使用 PAGE 时如何保存图形?你好,
就个人而言,对于这种情况,我会使用 By() 而不是 Page(),因为使用 By 时,会返回一个 Graph Builder 对象列表。 然后我可以遍历对象列表以保存每个 PNG 文件。 例如,
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
By( :age, :sex )
);
For( i = 1, i <= N Items( gb ), i++,
fName = Report( gb[i] )[Outline Box( 1 )] << Get Title;
Report( gb[i] )[Outline Box( 1 )] << Save Picture( "$TEMP/myPics/" || fName || ".png", "PNG" );
);
希望这可以帮助!
温迪