如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?
Posted
技术标签:
【中文标题】如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?【英文标题】:How can I automatically plot graphs in R with ggplot and save them to a folder? 【发布时间】:2017-08-08 03:00:51 【问题描述】:我正在尝试为数据集的每一列创建一个图表(使用 quickplot),并将其以 pdf 格式保存到一个文件夹中 - 任何建议都将不胜感激!
到目前为止,我已经制作了一个测试数据框(在我尝试使用 500 多列之前)
test.data <-cbind.data.frame(data$col_1,data$col_2,data$col_3)
然后我尝试编写一个函数来绘制和保存图形。我正在尝试制作图表条形图(带有一些标题和颜色规范),以显示编号的数量。每个类别的人。因此,这些列通常由分类数据组成。
plot.graphs <- function(x)
for(i in colSums(x))
plots <- quickplot(i) +
geom_bar(color= "#6267c1", fill="#6267c1") +
labs(title= "i",
x="i",
y="Count") +
theme(help()
plot.title = element_text(colour = "#453694"),
axis.title = element_text(colour ="#453694"))
ggsave(plots,filename = "testplot",nm[1],".pdf",sep="")
print(plots)
plot.graphs(test.data)
但是,这似乎会出现很多错误,所以我认为我做得不对。
【问题讨论】:
for(i in colSums()
colSums
是一个函数,for
的右括号在哪里? i
在函数内部使用在哪里?另一个问题可能是您的输入数据是matrix
(使用cbind
)而不是data.frame
,即test.data <- data[c("col_1", "col_2", "col_3")]
非常感谢,我会尝试这些更改!
【参考方案1】:
尝试使用pdf()
图形设备和dev.off()
包装您的绘图代码。 pdf()
将打开一个 pdf 图形设备,并将您生成的所有图形存储在一个文件中,直到您使用 dev.off()
关闭图形设备。
我无法测试您的代码,因为我没有数据集,但试试这个:
pdf(file = 'test.pdf', onefile = TRUE, paper = 'special', height = 11, width = 8.5)
for(i in colSums(x))
plots <- quickplot(i) +
geom_bar(color= "#6267c1", fill="#6267c1") +
labs(title= "i",
x="i",
y="Count") +
theme(help()
plot.title = element_text(colour = "#453694"),
axis.title = element_text(colour ="#453694"))
dev.off()
另见:https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/pdf.html
【讨论】:
非常感谢!我会试试看的:)【参考方案2】:以防万一这对任何人都有帮助,以下脚本最终对我有用:
plot.auto <- function(data, list = as.list(colnames(data)))
df <- data
ln <- length(names(data))
for(i in 1:ln)
plot <- quickplot(na.omit(df[,i],main=names(df)[i])) +
geom_bar() +
labs(title= colnames((df[,i])),
x=colnames((df)[i]),
y="y axis title") +
# this makes the titles and text particular colours
theme(
plot.title = element_text(colour = "#455876"),
axis.title = element_text(colour ="#455467"),
# this puts the labels on an angle so they don't overlap
axis.text.x = element_text(angle = 30, hjust = 1))+
# this makes the title of the plot the same as the column name
ggtitle(colnames((df)[i])) +
geom_text(stat='count',aes(label=..count..),vjust=-0.3)
print(length(unique(df[,i])))
# this deletes any characters in the column names which will make saving
difficult
save_name1<- gsub("/","or",as.character(colnames(df)[i]))
save_name<- gsub("\\?","",save_name1)
#this tells you each title of the graph as the function runs
print(save_name)
#this saves each graph in a folder which must be in your Working Directory
eg. Auto_Plot_Folder (as a pdf) with the file the same as the column name
ggsave(plot,filename =
paste("Auto_Plot_folder/",save_name,".pdf",sep =""),device ="pdf")
【讨论】:
以上是关于如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?的主要内容,如果未能解决你的问题,请参考以下文章
R语言自选数据完成图形绘制,要求: 1.图形中至少包含两条曲线; 2.图形设计中包?
数据可视化 | 使用R语言绘制专业图表(Ⅰ)——ggplot2 图形语法基础