如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中大家好,
我试图找到一种将结果保存到 pptx 中的方法。模板并意识到我应该首先将每个结果保存到文件中,然后编译成模板报告。
根据以下帖子:
https://community.jmp.com/t5/Discussions/the-graph-size-exported-to-pptx-Save-Presentation/mp/72135#M35554
但是,我无法找到根据循环下创建的列表来命名我的文件的方法。 我正在使用以下大类示例:
dt2 = Open( "$SAMPLE_DATA\Big Class.JMP" );
win = New Window( "Graphs", lub = Lineup Box( N Col( 2 ) ) );
ages = (Associative Array( Column( dt2, "age" ) ) << Get keys);
For( i = 1, i <= N Items( ages ), i++,
dt2 << select where( :age == ages[i] );
dt = dt2 << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
lub << append(
gb = dt << Graph Builder(
Variables( X( :weight ), Y( :height ), Wrap( :age, N View Levels( 1 ) ) ),
Elements( Points( X, Y, Legend( 7 ) ), Smoother( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Close Outline( 1 ),
Add Filter(
columns( :age ),
Where( :age == ages[i] ),
Display( :age, Size( 224, 126 ), List Display )
)
)
);
Report( gb )[AxisBox( 2 )] << Min( 0 );
gb<< save picture(Eval Insert("C:\....\BigClass^i^.png"));););有没有人知道如何做到这一点?
我尝试使用下面的方法来代替,但它不起作用。
gb << Save Picture( "C:\BigClass_" || Ages[i] ||".jpg", JPEG );
我需要为此创建一个不同的字符串/列表吗? 非常感谢任何指导。
谢谢
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中我无法直接回答你的问题,但只是围绕该方法提出一些想法。 在查看脚本之前,您可能希望通过点击按钮来探索这些内容。
1. 您可能想要在图形生成器中使用页面角色,因为这会为页面中变量的每个级别创建一个带有轴的单独图。
dt = Open( "$SAMPLE_DATA\Big Class.JMP" );
Graph Builder(
Size( 518, 2948 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ), Page( :age ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) )
);
2. 可能值得考虑如何使用另存为 powerpoint 功能。 从任何报告:文件 > 另存为 > 保存类型:Powerpoint 演示文稿。 SavePresentation() 是 JSL 函数。
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = bivariate( y( :weight ), x( :height ) );
rbiv = biv << report;
rbiv << Save Presentation( "$TEMP/jmp_example.pptx" );
Open( "$TEMP/jmp_example.pptx" );
希望有帮助。
问候,
菲尔
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中@gzmorgan0
感谢您的回复。
我一直在尝试使用 JSL,直到我需要在 pptx 中创建报告为止。 之所以根据列表名称保存图表是因为我需要为这个列表的每个元素创建一个报告。
我已将 JSL 脚本放在下面。 该脚本可以正常工作,但它不会保存图形及其相应的列表名称,它仅将每个图形保存为sample_1;样本_2...等 例如,我的sample_1的名称是“EH3”,但是,名称每个月都会改变,所以理想情况下我需要它从列表中获取名称。
我仍然需要为每个 Sample[i] 添加一个汇总表格,并将其与图表一起添加到 pptx。 这可能吗?
win = New window("Graphs", lub = Lineup Box (Ncol(3)));
//selecting the list of samples or variables for which a graph is required
Samples = (Associative Array(Column (dt4, "Sample"))<<GET keys=""></GET>
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中你的上一篇文章有
gb<< save picture(Eval Insert("C:\temp\^i^.png") ||Char(Ages[i])||".jpg",JPEG););请看看你的语法。 对于 i=1(其中 Ages[i] = 12),这将生成字符串 "C:\temp\1.png12.jpg" 。
gb<< save picture("C:\temp\Age_" ||Char(Ages[i])||".jpg",JPEG););F或 i=1,其中 Ages[i] = 12,这将生成字符串“C:\temp\Age_12.jpg”
您的原始示例使用 :age 列的唯一值作为列表。如果保存不起作用,并且不是由于语法错误,可能列表中的值包含不能是有效 Windows 名称的符号。 直到现在我才打开您引用的链接。 如果您使用 p3icli 创建 pptx,则可以使用 p3icli 命令作为复杂名称或注释的标题和说明文字。 我已经使用这种方法来编写报告来审核控制限制:
- 创建 p3icli 命令列表,我称为 cmdlist,然后将每个 p3icli 命令插入到 cmdlist 中
- 为了插入新幻灯片或者重复模板
- 一个复杂的命令标题提供有关要显示的图表的上下文参数信息、数据日期等
- 使用 fid1 或 fid2 等简单名称插入图片的命令
- 基于分析的标题命令,限制是否太松或太紧等。
我编写此大纲是为了说明如何使用 p3icli 标题和说明文字选项,而不是使用保存的文件名。
如果您需要使用 p3icli 的替代方案,这不是合适的论坛,请发送私人消息。
查看您的列表后,您没有在列表中找到像 @ # % ( ) - ^ 这样的异常符号,那么您需要提供实际 JSL 代码的片段和错误消息。
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中它肯定有效,但不是我想要的。 我想要保存图片时的图像<<回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中我正在考虑类似以下的内容,但现在我意识到这可能不是您想要的,因为它没有捕获轴。
dt2 = Open( "$SAMPLE_DATA\Big Class.JMP" );
gb = dt2 << Graph Builder(
Size(800, 600),
Variables( X( :weight ), Y( :height ), Wrap( :age ) ),
Elements( Points( X, Y ), Smoother( X, Y ) )
);
Report( gb )[AxisBox( 2 )] << Min( 0 );
dt = gb << make into data table();
for each row(dt,
img = :graph;
img << save image(Eval Insert("$DOCUMENTS/BigClass^char(:age)^.png"));
);
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中@XanGregg
那么您将如何引用每个表? 那么如何将每个表保存到带有列表名称的图片中呢?
你能展示一下在这个大类示例中你将如何做到这一点吗?
谢谢
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中@gzmorgan0
谢谢你的提示。 在本例中,它适用于 Big Class。 但是,它在我的 scrypt 上不起作用。
我已经尝试了这两个命令,但只有第一个命令适用于我的脚本,但仅将 ^i^ 替换为数字,而不是我作为列表的名称/字符。 第二个命令适用于 Big Class 示例,因此 Char() 可能不适用于名称?
gb<< save picture(Eval Insert("C:\temp\BigClass^i^.png"));
//and also
gb << Save Picture( "C:\temp\BigClass_" || char(Ages[i]) ||".jpg", JPEG );
);
我也尝试过在第一行命令下使用 Char() 函数,但它不能像“||”一样工作似乎不适用于 Eval Insert()。
C:\temp\^i^.png") ||Char(Ages[i])||".jpg",JPEG););gb<< save picture(Eval Insert("
你知道如何解决这个问题吗?
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中您需要一个围绕 Ages[i] 的 Char() 函数。 关联数组 Ages 的值是数字。请注意,下面的脚本正在写入 c:\temp\ 目录。 注释的语句也将起作用。您应该在保存语句之前关闭 Append() 语句。
dt2 = Open( "$SAMPLE_DATA\Big Class.JMP" );
win = New Window( "Graphs", lub = Lineup Box( N Col( 2 ) ) );
ages = (Associative Array( Column( dt2, "age" ) ) << Get keys);
For( i = 1, i <= N Items( ages ), i++,
dt2 << select where( :age == ages[i] );
dt = dt2 << subset( invisible, selected rows( 1 ), selected columns( 0 ) );
lub << append(
gb = dt << Graph Builder(
Variables( X( :weight ), Y( :height ), Wrap( :age, N View Levels( 1 ) ) ),
Elements( Points( X, Y, Legend( 7 ) ), Smoother( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Close Outline( 1 ),
Add Filter(
columns( :age ),
Where( :age == ages[i] ),
Display( :age, Size( 224, 126 ), List Display )
)
)
);
);
Report( gb )[AxisBox( 2 )] << Min( 0 );
//gb<< save picture(Eval Insert("C:\temp\BigClass^i^.png"));<BR />
gb << Save Picture( "C:\temp\BigClass_" || char(Ages[i]) ||".jpg", JPEG );
);
回复:如何将图形生成器中的每个图形保存到带有列表数组标题的图像文件中“gb << Make Into Data Table()”有帮助吗? 它创建一个包含一列图像的新数据表。