我有一个数据集,其第一列是日期格式的句点,然后是大约50列。所有列都具有相同的比例和数字。我试图一次绘制两列,然后按期间列第1列和第2列,然后按第3列和第4列等,直到我用完迭代。
我写的功能不起作用。它没有给我任何错误,但没有产生输出。当我在循环之外运行代码时,它可以工作。
下面的可重复样本
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
H$Date<-seq(as.Date('2001-03-31'),by='quarter',length=10)
H<-H[,c(11,1,2,3,4,5,6,7,8,9,10)]
plotmebabe<-function(a){
for (i in 2:length(a)){
ggplot(data=a,aes(x=Date)) +
geom_line(aes(y=a[,i]),color="blue",size=2)+
geom_line(aes(y=a[,i+1]),color="pink",size=2) +
ylab(label="This is Y axis")+
xlab("This is X axis")+
ggtitle("Hello")+
theme(plot.title = element_text(lineheight=.8, face="bold"))
}}
答案 0 :(得分:1)
只绘制ggplot对象,实际上是print() - ed。在交互式命令行中键入内容时,结果将隐式print() - ed。当您在for循环中运行代码时,不会发生此隐式打印。你需要在对象上实际调用print()来触发绘图。
这是一个更新版本(修复其他错误)
plotmebabe<-function(a){
for (i in 2:(ncol(a)-1)){
print(ggplot(data=a,aes(x=Date)) +
geom_line(aes_string(y=names(a)[i]),color="blue",size=2)+
geom_line(aes_string(y=names(a)[i+1]),color="pink",size=2) +
ylab(label="This is Y axis")+
xlab("This is X axis")+
ggtitle("Hello")+
theme(plot.title = element_text(lineheight=.8, face="bold")))
}}
plotmebabe(H)