R 在循环中创建GGPLOT

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

我正在努力创建一个循环,从导入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("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)


})