【问题标题】:Getting vector-graphics output from PROC SGPLOT in PDF从 PDF 中的 PROC SGPLOT 获取矢量图形输出
【发布时间】:2012-03-09 21:39:54
【问题描述】:

任何人都有从 PROC SGPLOT(以及类似的功能,如 SGSCATTER)获取干净 PDF 输出的提示吗?

当我使用 ODS 创建图表并将其写入 PDF 时,sas EG 报告窗口中的结果看起来不错,但 PDF 输出会被光栅化为 PDF 的 DPI 设置,因此如果您放大 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 支持。对于 1-off 图表,有几种解决方法可以,但最好的解决方案是升级到 SAS 9.3。

【问题讨论】:

    标签: sas


    【解决方案1】:

    这是一个最小的例子(sgplot 代码来自 sas 文档):

    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=pdfsn-p 告诉 SAS 自己创建 pdf 格式的图像, 而不是将 png 的光栅化添加到 pdf 报告中。 这个 sn-p 应该在您的 c:\temp 目录中生成一个名为 report.pdf 的文件。 其中的图像是可缩放的。

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

    Controlling the Image Name and Image Format

    Using PROC SGPLOT for Quick High-Quality Graphs

    【讨论】:

      【解决方案2】:

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

      options sysprint='Acrobat PDFWriter'
              'k:\ruzsa\users\pdf\pdfwriter.pdf';   /* <- Edit to the location of your driver. */
      goptions reset=all device=winprtc;
      

      【讨论】:

      • 这可能行得通,但不幸的是,我在没有 adobe 打印驱动程序的 UNIX 上运行 sas。
      【解决方案3】:

      我终于解决了这个问题。有几种方法可以发挥作用,而一种方法确实有效。

      “完美”的解决方案是升级到 SAS 9.3; SAS 9.2 无法将 SGPLOT/SGPANEL 图表制作成矢量 PDF。在 SAS 9.3 中运行相同的代码可以生成完美的图表。

      我发现了另外两个部分解决方案:

      1:在企业指南中,您可以调整显示设置,如果一切正常,您可以打印 SAS 报告窗口并使用 Adob​​e PDF 打印机。这可以正常工作,尽管输出有时看起来很不稳定。

      2:ods latex file='file.tex' gout='/.../';(将 gout= 设置为您的输出目录)。至少在 unix 9.2 中,这会产生一个没有换行符且似乎没有实际引用图表的垃圾 TeX 文件。它还为每个图表生成一个 PostScript 文件!您可以将此 .ps 文件与 Distiller(或 TeX)一起使用来创建外观漂亮的矢量图。它们打印得很好,尽管我发现 SAS 9.3 PDF 在屏幕上看起来比这种方法的 .ps 好得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-18
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        • 2023-03-09
        相关资源
        最近更新 更多