从PDF获取PROC SGPLOT的矢量图形输出

时间:2012-03-09 21:39:55

标签: sas

任何人都有提示从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。

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的文件。 其中的图像是可扩展的。

以下链接中有更多内容。

Controlling the Image Name and Image Format

Using PROC SGPLOT for Quick High-Quality Graphs

答案 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要好得多。