代码之家  ›  专栏  ›  技术社区  ›  lmsasu

偏R EPS图像的绘制与分辨率问题

  •  0
  • lmsasu  · 技术社区  · 14 年前

    我想用r创建一个函数的图形。代码是:

     x <- seq(from=0, to=1, by=0.00001)
     f <- function(x) ....
     y <- f(x)
     plot(x, y, xlab="x", ylab="f(x)", pch=16, cex=0.5)
     min(y)
     [1] 0.2291203
     max(y)
     [1] 0.7708797
    
    1. 当我从rgui将图形保存为BMP时,它看起来像 here 这很好。当我将其保存为eps并包含在乳胶中时:

      \begin{figure}[htbp]
      \centering
          \includegraphics[scale=0.4]{./images/f-probart.eps}
      \end{figure}
      

      它是倾斜的,如屏幕截图所示 here 怎么了?我想在eps中从rgui导出可能有问题,因为结果eps在irfanview中也显示为倾斜的。因此我怀疑不是乳胶包含代码错了…

    2. 我如何创建具有所需分辨率的图形,例如244dpi?是否有其他包/功能允许我导出具有特定分辨率的EPS?

    谢谢

    2 回复  |  直到 8 年前
        1
  •  2
  •   Joris Meys    14 年前

    我无法重现您的错误,所以我想这是您的系统所特有的。如果我保存为eps并将其包含在乳胶中(使用graphicx包),那么一切都会完全正常工作。请记住,如果在r中使用postscript()函数,则还必须指定图片的宽度和高度。我可能是错的,但我认为它默认为r中图形窗口的默认值(这可以解释EPS图片的尺寸)。

    如果从图形窗口保存,它通常应采用图形窗口的当前宽度和高度。在我的R版本上是这样的,但也许你的选项设置不同?检查ps.options()并查看宽度和高度的值是否为0。如果不是这样的话,那可能是问题所在。

    附带说明:您可以使用PDF。看到了吗?PDF格式的R。它允许您指定图片的宽度和高度,并在乳胶中正确复制。然后应该使用pdfex来构建文件。

    我的经验是,使用PDF图形和PDFTEX比通过PS麻烦小。事实上,在LaTex中,没有必要再通过EPS来获得一个像样的PDF。使用pdfex的另一个优点是,您可以轻松地在同一文档中组合所有图形格式。(对于EPS,您需要EPSTOPDF包)

    2)DPI要求仅适用于网格图像,因此不适用于矢量化的EPS和PDF。我会使用PNG,这是图形的最佳格式。请参见函数png()中的选项res。

     png("somefile.png",res=244)
     plot(x, y, xlab="x", ylab="f(x)", pch=16, cex=0.5)
     dev.off()
    

    或者,也可以使用函数bmp()以完全相同的方式处理位图图形。不要忘记末尾的dev.off()。

        2
  •  1
  •   lmsasu    14 年前

    我使用了开罗包;代码是:

        Cairo(24000,24000,file="a.ps",type="ps",bg="transparent",pointsize=12, units="px", dpi=2400)
        plot(x, y, xlab="x", ylab="f(x)", pch=16, cex=0.5, type='l')
        dev.off()
    

    结果图表看起来不错。然而,有一个问题:根据@joris meys,dpi对于矢量图形是无用的;在这种情况下,为什么必须为cairo函数指定dpi?