跳转至

R作图后输出格式选择(export包)

R中出图的保存方式 ggplot2出的图,可以使用ggsave保存。 非ggplot2出的图,就需要使用原生的函数或者是export包保存。 原生函数保存出的图: - jpeg() -pdf() - tiff() - pdf() 方法是先打开画板,再画图,最后关闭画板。

png("demo.png",width = 800,height = 800,units = "px") #先打开画板,并指定尺寸
plot(pi:pi^2,-pi*3:-pi) #绘图
dev.off() #关闭画板

pdf("demo.png") 
plot(pi:pi^2,-pi*3:-pi)
dev.off()

但是如果中间ggplot画的图,则可能需要使用print().具体表现为,如果直接使用R-studio画图是可行的。但是如果把绘图和保存整个过程封装到函数里,则输出的图是空白。此时就需要使用print()

demo1 <- function(){
tiff("demo1.tiff",width = 800,height = 800,units = "px")
plot(pi:pi^2,-pi*3:-pi)
dev.off()

tiff("demo1.tiff",width = 800,height = 800,units = "px")
df <- data.frame(
  gp = factor(rep(letters[1:3], each = 10)),
  y = rnorm(30)
)
ds <- do.call(rbind, lapply(split(df, df$gp), function(d) {
  data.frame(mean = mean(d$y), sd = sd(d$y), gp = d$gp)
}))
p1 <- ggplot(df, aes(gp, y)) +
  geom_point() +
  geom_point(data = ds, aes(y = mean), colour = 'red', size = 4)
#p1 在函数里直接p1绘图,画板是接收不到的。
print(p1) #注意:此处,在函数里,所以需要用print,否则输出是空白。
dev.off()
}

demo1()

2020.2.29更新-export于2020.2.11被CRAN归档,目前无法直接安装。可以从下载地址下载包。然后本地安装。

#先安装依赖包
install.packages(c("flextable", "stargazer", "openxlsx"))
install.packages("D:/RStudio/Rtools/export_0.2.2.tar.gz", repos = NULL, type = "source")
library("export")

或者从github安装包

install.packages("officer")
install.packages("rvg")
install.packages("openxlsx")
install.packages("ggplot2")
install.packages("flextable")
install.packages("xtable")
install.packages("rgl")
install.packages("stargazer")
install.packages("tikzDevice")
install.packages("xml2")
install.packages("broom")
install.packages("devtools")
devtools::install_github("tomwenseleers/export")

Y 叔说作图用R,然后修图用ppt。毕竟ps不是每个人都会,而且PS名声在外。 以下转载自Y叔公众号 安装R包,

install.packages("export")
library(export)

library(effects)
fit=lm(prestige ~ type + income*education, data=Prestige)
plot(Effect(c("income", "education"), fit),multiline=T, ci.style="bands")


##说明:在R-studio中运行,前面只要输出图像后。在预览窗口选中对应的图像,运行下面命令即可生成对应的pptx文件。文件名,大小。
#如果图片太大,导出的文件是矢量,会特别大,打开速度比较慢。
graph2ppt(file="effect plot.pptx",width=7,height=5)


##在引入export包后,可以写一个简单函数,一次输出多种类型的图。
out_img <- function(filename,pic_width=5,pic_height=7){
  graph2png(file=filename,width=pic_width,height=pic_height)
  graph2ppt(file=filename,width=pic_width,height=pic_height)
  graph2svg(file=filename,width=pic_width,height=pic_height)
}

#调用函数
out_img(filename="filter_count")

#调用函数,同时指定宽度和高度
out_img(filename="heatmap",pic_width=7,pic_height=7)

该包中可用的工具 graph2bitmap graph2doc
graph2eps
graph2jpg
graph2office graph2pdf graph2png
graph2ppt
graph2svg
graph2tif
graph2vecto

table2csv table2csv2
table2doc
table2excel table2html
table2office
table2ppt
table2spreadsheet table2tex

经验总结

一定要输出ppt和svg格式。 ppt格式可以在office里面小修。 svg格式可以在Adobe Illustrator里面修改。 png格式无损图片质量。

回到页面顶部