如何解决我试图在ggplot中做一个循环,将结果保存到列表中
我正在尝试循环ggplot以将其保存到列表中。我有一个问题,因为所有图形都显示了最后一个变量的数据。你能帮我吗? 我想将图形存储在列表中
这是我的数据:
head(rev_regions1m)
World US Eurozone Emerging.Markets Asia.Pacific.Ex.Japon date
1 -0.015025440 -0.004314109 -0.0074216799 -0.016600603 -0.020172773 2018-12-31
2 -0.015025440 -0.004314109 -0.0074216799 -0.016600603 -0.020172773 2019-01-01
3 -0.015025440 -0.004314109 -0.0074216799 -0.016600603 -0.020172773 2019-01-02
4 0.016668433 0.001509360 -0.0007849854 -0.003445408 -0.007896815 2019-01-03
5 0.016668433 0.001509360 -0.0007849854 -0.003445408 -0.007896815 2019-01-04
6 -0.009066019 -0.005461343 -0.0051865009 -0.013999017 -0.016930263 2019-01-07
>
这是我的代码:
plot<-list()
for (i in 1:(length(rev_regions1m)-1)) {
plot[[i]]<-ggplot(rev_regions1m)+
geom_line((aes(x=date,y= rev_regions1m[,i])),size=1.4,color="midnightblue",inherit.aes = FALSE)+
labs(x="Date",y="Value",title = "Revisions 1M",subtitle = names_regions[i])+
theme_wsj()+
scale_colour_wsj("colors6")
}
请问有人可以帮我吗!
解决方法
这里是产生ggplot对象列表的一种解决方案。工作流程如下:
-
分割数据以获取足以进行绘图的数据框列表
-
创建自定义绘图功能
-
使用
lapply()
遍历数据帧列表并创建ggplot对象列表。
library(ggplot2) # using base R dataset iris # Lets say you want to make a plot for each specie and save it into a list # split your initial data into pieces that will be used to make plots iris_list = split(iris,iris$Species) # create a custom function that take as input a piece of your data plot_fun = function(irisdf) { ggplot(irisdf,aes(x = Sepal.Length,y = Sepal.Width)) + geom_point() } # use lapply() on the list of pieces to get a list of ggplot objects plots_list = lapply(iris_list,FUN = plot_fun)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。