【问题标题】:Plotting with R - skewed eps image & resolution problem用 R 绘制 - 倾斜的 eps 图像和分辨率问题
【发布时间】:2010-09-10 11:52:28
【问题描述】:

我想在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 并包含在 LaTeX 中时:

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

    它是倾斜的,如here 的屏幕截图所示 怎么了?我猜想在 eps 中从 RGui 导出存在问题,因为生成的 eps 在 IrfanView 中也显示为倾斜。因此我怀疑这不是错误的 LaTeX 包含代码......

  2. 如何创建具有所需分辨率(例如 244 dpi)的图形?是否有其他软件包/功能可以让我以特定分辨率导出 eps?

谢谢

【问题讨论】:

  • 当您使用比 0.4 更高的比例因子时,效果是否仍然存在?您确定它不是您的查看器中的人工制品吗? Eps 是一个很好的格式。
  • 是的,0.6 和 0.2 的效果相同。上面报告的第二张图片取自 yap (miktex)。在 pdf/adobe reader 9.3 中效果仍然存在。

标签: r graphics latex eps


【解决方案1】:

我无法重现您的错误,所以我猜这是您系统特有的问题。如果我保存为 eps 并将其包含在乳胶中(使用 graphicsx 包),一切都很好。请记住,如果您在 R 中使用 postscript() 函数,则还必须指定图片的宽度和高度。我可能是错的,但我认为它默认为 R 中图形窗口的默认值(这可以解释你的 eps 图片的尺寸)。

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

附带说明:您可以改用 pdf。请参阅 R 中的 ?pdf。它允许您指定图片的宽度和高度,并在 Latex 中正确再现。那么你应该使用 pdftex 来构建文件。

我的经验是,使用pdf图形和pdftex比通过PS要少麻烦。事实上,在 Latex 中,不再需要通过 eps 来获得一个像样的 pdf。使用 pdftex 的另一个优点是您可以轻松地将所有图形格式组合在同一个文档中。 (对于 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()。

【讨论】:

  • 您使用的是什么版本的 R?什么操作系统?我的:R 2.11.1/Windows 7 x32。
  • R2.11.1 32 位在 Windows 7 64 位上。但这在 Vista 和 XP 中是完全一样的,R2.10.x 你检查过 ps.options() 了吗?
  • 在ps.options()中,宽高均为0。
  • pdf 代替 ps:不幸的是,我不确定这是否适合我。
【解决方案2】:

我使用了 Cairo 包;代码是:

    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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2020-04-08
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多