在同一数据框中自动生成ggplot
Automating producing ggplot in same dataframe
我有一个数据集,第一列是日期格式的句点,然后是大约 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"))
}}
一个 ggplot 对象只是用它绘制的,它实际上是 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)
我有一个数据集,第一列是日期格式的句点,然后是大约 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"))
}}
一个 ggplot 对象只是用它绘制的,它实际上是 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)