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

Sas 从PDF格式的PROC SGPLOT获取矢量图形输出,sas,Sas,有人对从PROC SGPLOT(和类似的函数,如SGSCATTER)获得干净的PDF输出有什么建议吗 当我创建一个图形并使用ODS将其写入PDF时,结果在sas EG报告窗口中看起来很好,但PDF输出会被光栅化为PDF的DPI设置,因此如果放大PDF,就可以进行像素化。此外,如果我没有定义颜色/线条样式,PDF中的输出将使用不同的颜色和样式(sas报告窗口中的实线在PDF中变为虚线) 如果我用PROC GPLOT制作相同的图表,它会带有矢量化的文本和线条,在缩放/打印时看起来不像垃圾 是否有我需

有人对从PROC SGPLOT(和类似的函数,如SGSCATTER)获得干净的PDF输出有什么建议吗

当我创建一个图形并使用ODS将其写入PDF时,结果在sas EG报告窗口中看起来很好,但PDF输出会被光栅化为PDF的DPI设置,因此如果放大PDF,就可以进行像素化。此外,如果我没有定义颜色/线条样式,PDF中的输出将使用不同的颜色和样式(sas报告窗口中的实线在PDF中变为虚线)

如果我用PROC GPLOT制作相同的图表,它会带有矢量化的文本和线条,在缩放/打印时看起来不像垃圾

是否有我需要更改的选项?我需要设置一些标志?我尝试过像
OPTIONS DEVICE=SVG
这样的方法,但似乎不起作用。设置一个非常高的DPI也不是一个很好的解决方案

代码示例(但实际上,这发生在所有具有任何数据/代码的SG*函数上):

这些在sas EG结果窗口中生成大致相同的图形(除了SGPLOT看起来更好),但当它们最终出现在pdf中时,SGPLOT被光栅化为图像并放到pdf页面上,而GPLOT显示为可爱的矢量图


编辑:参见我在下面发布的解决方案。我发现它没有很好的文档记录,但是SAS 9.2没有很好的PDF支持。对于一次性图表,有两种解决方法是可行的,但最好的解决方案是升级到SAS 9.3。

您可以通过使用Adobe打印驱动程序来提高质量。很多年前,我在SAS网站上发现了这个例子,当时我正试图解决一个不同的问题,但它可能也适用于您的问题

options sysprint='Acrobat PDFWriter'
        'k:\ruzsa\users\pdf\pdfwriter.pdf';   /* <- Edit to the location of your driver. */
goptions reset=all device=winprtc;
options sysprint='Acrobat PDFWriter'
'k:\ruzsa\users\pdf\pdfwriter.pdf';/* 下面是一个简单的示例(sgplot代码来自sas文档):

imagefmt=pdf
代码段告诉SAS以pdf格式创建图像本身, 而不是将png栅格添加到pdf报告中。 此代码段应在c:\temp目录中生成一个名为report.pdf的文件。 其中的图像是可伸缩的

下面的链接中还有更多内容


我终于解决了这个问题。这类工作有几种方法,其中一种方法确实有效

“完美”的解决方案是升级到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文件与蒸馏器(或TeX)一起使用,以创建外观良好的矢量图。虽然我发现SAS 9.3 PDF在屏幕上的效果比使用这种方法的.ps要好得多,但它们的打印效果很好。

这可能很好,但不幸的是,我在UNIX上运行SAS时没有adobe打印驱动程序。
options sysprint='Acrobat PDFWriter'
        'k:\ruzsa\users\pdf\pdfwriter.pdf';   /* <- Edit to the location of your driver. */
goptions reset=all device=winprtc;
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;