在R中导出图表

6yoyoihd  于 2022-12-25  发布在  其他
关注(0)|答案(3)|浏览(168)

我有两张用R绘制的图表,我想将其导出为高分辨率图片以供发布。
例如:

a<-c(1,2,3,4,5,6,7)
 b<-c(2,3,4,6,7,8,9)
 par(mfrow=c(2,1))
 plot (a,b)
 plot(a,b)

我通常通过以下方式导出此图表:

dev.copy(jpeg,'test.jpeg',width=80,height=150,units="mm",res=200)
 dev.off()

但是我总是觉得这个过程有点麻烦,因为在R中绘制的图形不一定看起来像我导出的图形,所以我想知道是否有一种方法可以在绘制图形之前指定图形的尺寸和分辨率,以便在导出图形之前可以直观地检查图形?
谢谢

7y4bm7vi

7y4bm7vi1#

您可以尝试:

png('out.png')

a<-c(1,2,3,4,5,6,7)
b<-c(2,3,4,6,7,8,9)
par(mfrow=c(2,1))
plot (a,b)
plot(a,b)
dev.off()

正如baptiste所说,jpeg是你能选择的最糟糕的格式,你应该看看bmppng函数的帮助(具有?bmp?png)。bmppng都具有heightwidth、和res参数,您可以使用这些参数指定输出的尺寸和分辨率。另外,我不推荐使用dev.copy。正如您所看到的,输出的结果并不总是您所期望的。

vxf3dgd4

vxf3dgd42#

为了补充Bonifacio2的答案,如果你先调用函数来绘图,你也可以在实际绘图之前定义你的边距和窗口大小等,这样你就可以完全控制所有的图形规格。

pdf(file='test.jpeg',width=80,height=150,units="mm")  #I prefer pdf, because they are editable files
a<-c(1,2,3,4,5,6,7)
b<-c(2,3,4,6,7,8,9)
par(mfrow=c(2,1))
plot (a,b)
plot(a,b)
dev.off()
wvyml7n5

wvyml7n53#

您可以使用cowplot包以几种不同的方式合并多个面板。例如,在您的情况下,我们导出一个图,其中两个面板排列在两行和一列中。我假设您更喜欢使用base-R 'plot'函数,而不是ggplot。

library(cowplot)
p1 <- ~{
  plot(a,b)
  }

p2 <- ~{
  plot(b,a)
}

png("plot.png",
    width = 3.149606, # 80 mm 
    height = 5.905512, # 150 mm 
    units = 'in',
    res = 500)

plot_grid(p1, p2, labels = "AUTO", nrow = 2, ncol = 1)

dev.off()

请注意,如果不需要,您可以删除标签,或者使用“自动”打印小写字母。关于文本大小、轴标签等,请使用标准参数作为base-R的通用绘图函数。我希望这个答案对您有帮助。祝您好运。

相关问题