任何人都有提示从PROC SGPLOT获取干净的PDF输出(以及类似的功能,如SGSCATTER)?
当我创建图形并使用ODS将其写入PDF时,结果在sas EG报告窗口中看起来很好,但PDF输出会被栅格化为PDF的DPI设置,因此如果您放大PDF,则可以制作PDF像素化。此外,如果我没有定义颜色/线条样式,PDF中的输出将使用不同的颜色和样式(在sas报告窗口中为实线的线在PDF中变为虚线)。
如果我使用PROC GPLOT创建相同的图表,它会带有矢量化文本和缩放/打印时看起来不像垃圾的行。
我需要更改一个选项吗?我需要设置一些标志?我尝试了OPTIONS DEVICE=SVG
之类的东西,似乎没有用。设置非常高的DPI也不是一个很好的解决方案。
代码示例(但实际上,这种情况发生在所有带有任何数据/代码的SG * 函数上):
options nonumber orientation=landscape;
ods pdf file='FILENAME.pdf' notoc;
proc sgplot data=shipped;
series x=date y=weighted_price / group=type;
run;
proc gplot data=shipped;
plot weighted_price*date=type;
symbol1 c=blue i=join v=none w=1 l=1;
symbol2 c=red i=join v=none w=1 l=1;
symbol3 c=brown i=join v=none w=1 l=1;
run; ods pdf close;
这些在sas EG结果窗口中生成大致相同的图形(除了SGPLOT看起来更好)但是当它们最终出现在pdf中时,SGPLOT被栅格化为图像并被放到PDF页面上,而GPLOT则作为可爱的矢量图。
编辑:请参阅我在下面发布的解决方案。我没有发现它有详细记录,但SAS 9.2没有很好的PDF支持。有一些解决方案可以用于一次性图表,但最好的解决方案是升级到SAS 9.3。
答案 0 :(得分:4)
这是一个最小的例子(sgplot代码来自sas docs):
ods graphics / imagefmt=pdf;
ods pdf file = 'c:\temp\report.pdf';
proc sgplot data=sashelp.class;
scatter x=height y=weight;
ellipse x=height y=weight;
run;
ods pdf close;
imagefmt=pdf
代码段告诉SAS以pdf格式创建图片,
而不是将png的光栅添加到pdf报告中。
此代码段应在c:\ temp目录中生成名为report.pdf的文件。
其中的图像是可扩展的。
以下链接中有更多内容。
答案 1 :(得分:0)
您可以使用Adobe打印驱动程序来提高质量。多年前我在尝试解决其他问题时在SAS网站上找到了这个示例,但它也可能适用于您的问题。
options sysprint='Acrobat PDFWriter'
'k:\ruzsa\users\pdf\pdfwriter.pdf'; /* <- Edit to the location of your driver. */
goptions reset=all device=winprtc;
答案 2 :(得分:0)
我终于解决了这个问题。有几种工作方式,以及一种真正有效的方法。
“完美”的解决方案是升级到SAS 9.3; SAS 9.2无法将SGPLOT / SGPANEL图表转换为矢量化PDF。在SAS 9.3中运行相同的代码可以生成完美的图表。
我找到了另外两个部分解决方案:
1:在企业指南中,您可以调整显示设置,如果一切正确,您可以打印SAS报告窗口并使用Adobe PDF打印机。这可以正常工作,虽然输出有时看起来非常不合适。
2:ods latex file='file.tex' gout='/.../';
(将gout =设置为输出目录)。这至少在unix 9.2中产生了一个垃圾TeX文件,该文件没有换行符,似乎没有实际引用图表。它还为每个图表生成一个PostScript文件!您可以将此.ps文件与Distiller(或TeX)一起使用来创建体面的矢量图表。它们打印得很好,虽然我发现SAS 9.3 PDF在屏幕上看起来比这种方法的.ps要好得多。