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格式无损图片质量。