我需要将R中的图保存为EMF格式(windows图元文件格式),因为这样可以使图表在Microsoft Word中的屏幕和纸张上看起来很好。没有其他选择(PNG,postscript等)在两者上运作良好。 PNG
设备会产生较差的重建图。修改res
参数会炸毁图形元素,我找不到任何能够清楚地解释如何缓解这一点的内容。使用postscript
打印输出非常好。但是,Word的EPS过滤器被破坏,因此我无法在屏幕上看到EPS文件。我需要一些在屏幕和纸上都能正常工作的东西。 win.metafile
只能做到这两点。
这是扭曲。我正在使用gridExtra
来自定义绘图的布局。从我收集的内容来看,这意味着我正在将多个绘图写入一个设备(然后我想将其导出到EMF)。但我知道win.metafile
每个文件只允许一个图。来自?win.metafile
:
对于win.metafile,每个文件只允许一个绘图
所以以下内容不起作用:
library(ggplot2)
library(gridExtra)
# g_legend pinched from Hadley:
# https://github.com/hadley/ggplot2/wiki/Share-a-legend-between-two-ggplot2-graphs
g_legend <- function(a.gplot)
{
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)
}
win.metafile(file='test.emf', width=6, height=4)
p <- ggplot(mtcars, aes(x=cyl, y=mpg, colour=factor(gear)))
pl <- p + geom_point()
legend <- g_legend(pl)
lwidth <- sum(legend$width)
pp <- arrangeGrob(pl + theme(legend.position="none"), legend)
pp
dev.off()
实际上我收到以下错误消息:
grid.newpage()出错:无法创建元文件'test.emf'
确定。所以这是我的问题:如何欺骗win.metafile
只能看到来自arrangeGrob输出的一个图?我可以将其输出填充到某些并获取一个图吗?它必须是可能的,因为如果我使用RStudio的导出功能,我会在屏幕和纸张上获得一个很好看的图表。但我想编纂这个,所以我不必手动导出文件。
我在网上搜索过,但却找不到任何可以解决此问题的内容。非常感谢帮助!
答案 0 :(得分:2)
我刚刚使用devEMF
包尝试了这个,虽然它会发出警告,但它看起来就像你在这里创建的图片。
您只需要install.packages('devEMF')
然后:
require(devEMF)
emf('imPic.emf')
print(pp)
dev.off()