带有高分辨率 ggplot2 的透明背景图,R

Transparent background graph with ggplot2 in high resolution, R

我有一个类似于以下示例的 dataframe,我想将两个绘图与 grid.arrange 合并,然后以高分辨率和透明背景导出它们。我得到了透明的情节,分辨率很糟糕。

有什么办法吗?

我看过一些帖子 (post1,post2),但我需要高分辨率的情节(大约 600-800)

谢谢。

d <- iris
o1=ggplot(d, aes(x=d$Sepal.Length, y=d$Sepal.Width))+geom_smooth(method=lm,alpha=0.25,col='seagreen',lwd=0.1) +ylim(0,8)+xlim(0,8)+
    geom_point(shape=23,fill="black",size=0.2)+theme_bw()+theme(plot.background = element_blank(),panel.grid.major = element_blank()
                                                                ,panel.grid.minor = element_blank()) +labs(x="bla bla",y="bla bla")+
    theme(axis.title.x = element_text(face="bold", size=8),axis.text.x = element_text(size=5))+
    theme(axis.title.y = element_text(face="bold", size=8),axis.text.y = element_text(size=5))+
    theme(plot.title = element_text(lineheight=.8, face="bold",size=8))+theme(
        panel.background = element_rect(fill = "transparent",colour = NA), 
        panel.grid.minor = element_blank(), 
        panel.grid.major = element_blank())
o2=ggplot(d, aes(x=d$Sepal.Length, y=d$Petal.Length))+geom_smooth(method=lm,alpha=0.25,col='seagreen',lwd=0.1) +ylim(0,8)+xlim(0,8)+
    geom_point(shape=23,fill="black",size=0.2)+theme_bw()+theme(plot.background = element_blank(),panel.grid.major = element_blank()
                                                                ,panel.grid.minor = element_blank()) +labs(x="bla bla",y="bla bla")+
    theme(axis.title.x = element_text(face="bold", size=8),axis.text.x = element_text(size=5))+
    theme(axis.title.y = element_text(face="bold", size=8),axis.text.y = element_text(size=5))+
    theme(plot.title = element_text(lineheight=.8, face="bold",size=8))+theme(
        panel.background = element_rect(fill = "transparent",colour = NA), 
        panel.grid.minor = element_blank(), 
        panel.grid.major = element_blank())
png(bg = "transparent")
grid.arrange(o1,o2,ncol=1)
dev.copy(png,"graph.png",width=20,height=15,units="cm",res=800)
dev.off(dev.prev())
dev.off()

您需要在png中指定尺寸和分辨率。这对我有用

png("graph.png", width=20, height=15, units="cm", res=800, bg="transparent")
    gridExtra::grid.arrange(o1, o2, ncol=1)
dev.off()

您也可以使用ggsave。这里我用cowplot::plot_grid来组合o1 & o2

o3 <- cowplot::plot_grid(o1, o2, nrow = 2)

ggsave(plot = o3, file = "graph2.png", 
       type = "cairo-png",  bg = "transparent",
       width = 20, height = 15, units = "cm", dpi = 800)