R 在循环中创建GGPLOT
我正在努力创建一个循环,从导入R的文件中的变量加载不同的绘图 dummydata.csv中的某些数据:R 在循环中创建GGPLOT,r,ggplot2,R,Ggplot2,我正在努力创建一个循环,从导入R的文件中的变量加载不同的绘图 dummydata.csv中的某些数据: Time,A1,A2,A3,A4 1,0.1,0.2,0.1,0.1 2,0.2,0.2,0.2,0.3 3,0.4,0.5,0.3,0.4 4,0.6,0.8,0.4,0.6 5,0.8,0.9,0.6,0.7 基本上,真正的数据将在一个比这个大得多的文件中,我对在单独的图中绘制彼此变量的“时间”感兴趣,并且认为尝试循环它将比单独写出每个图更明智 我想做的是: library("ggplo
Time,A1,A2,A3,A4
1,0.1,0.2,0.1,0.1
2,0.2,0.2,0.2,0.3
3,0.4,0.5,0.3,0.4
4,0.6,0.8,0.4,0.6
5,0.8,0.9,0.6,0.7
基本上,真正的数据将在一个比这个大得多的文件中,我对在单独的图中绘制彼此变量的“时间”感兴趣,并且认为尝试循环它将比单独写出每个图更明智
我想做的是:
library("ggplot2")
dummydata <- read.csv("dummydata.csv", header = T)
columns <- colnames(dummydata[2:5])
for(i in columns){
title <- paste("graph_", i, ".pdf")
pdf(title)
ggplot(data = dummydata, aes(x=Time, y=i)) + geom_point()}
dev.off()
库(“ggplot2”)
dummydata您可以这样做(它是默认的plot
功能):
这里有一个使用不同方法的答案。我将数据转换成长格式,然后使用split生成所有绘图(pdf和内存)
#首先重塑数据
图书馆(E2)
m_dummydata您的绘图中没有任何图层,您想要点还是什么?但是只要确保您print
您想要的任何图形,print(ggplot(dat,aes_string(“Time”),i))+geom_point())
啊,是的,忘记了我示例中的+geom_point(),thanks@TomSmith这不是bunk评论中唯一的变化,还要注意aes_string()
和引用的“Time”
。有了这些更改,它应该可以与您问题中的代码即插即用。啊,确实如此,aes_字符串确实完美地修复了它,谢谢@如果你想把它作为一个答案,我很乐意接受它,因为它解决了我的问题,使用我已经尝试过的相同方法。
for (i in 1:(dim(dummydata)[2]-1)){
title<-paste0("graph_", i, ".pdf") # use paste0 to remove blanks
pdf(title)
plot(x=df[,1],y=df[,i],pch=20,type='l') # add options such as axis titles, color, ...
dev.off()}
for (i in 1:(dim(dummydata)[2]-1)){
title<-paste0("graph_", i, ".pdf")
pdf(title)
print(ggplot(data = dummydata, aes(x=Time, y=dummydata[,i+1]))+geom_point())
dev.off()}
#reshape data first
library(reshape2)
m_dummydata <- melt(dummydata,id.var="Time")
head(m_dummydata)
# Time variable value
# 1 1 A1 0.1
# 2 2 A1 0.2
# 3 3 A1 0.4
# 4 4 A1 0.6
# 5 5 A1 0.8
# 6 1 A2 0.2
plots <- lapply(split(m_dummydata,m_dummydata$variable),function(x){
mytitle=sprintf("graph_%s.pdf",unique(x$variable))
myplot = ggplot(x, aes(x=Time,y=value)) +geom_point()+labs(title=mytitle)
pdf(mytitle)
print(myplot)
dev.off()
return(myplot)
})