如何在数据框列表中为每个数据框绘制条形图

时间:2019-09-06 16:55:12

标签: r list ggplot2

我有一个数据帧列表,如下所示。我想绘制每个数据框的条形图,在x轴上绘制范围,在y轴上绘制wt0。当我尝试在循环下运行时,它将绘制最后一个数据帧的图形。

    li
[[1]]
  varName  Range  wt0   wt1
1  var 1 (-Inf,-6]  858  7788
2  var 1  (-6,0.5] 1698 85194
3  var 1 (0.5,1.5] 2040 15240
4  var 1 (1.5,2.5] 1928  7815
5  var 1 (2.5,3.5] 1900  5228

[[2]]
   varName  Range  wt0   wt1
1 var 2 (-Inf,-6]  858  7788
2 var 2   (-6,-5]    3     6
3 var 2   (-5,-4]   57   196
4 var 2   (-4,-3]    5   162
5 var 2   (-3,-2] 4008 18285

[[3]]
   varName   Range   wt0   wt1
1  var 3  (-Inf,-6]   858  7788
2  var 3    (-6,-2]  3205 11246
3  var 3    (-2,-1]  2968 94972
4  var 3  (-1,12.5]  5741 17884
5  var 3 (12.5,Inf] 11267  8167

[[4]]
  varName  Range  wt0  wt1
1    var 4 (-Inf,-6]  858 7788
2    var 4   (-6,-2] 3487 2387
3    var 4   (-2,-1] 5049 3361
4    var 4  (-1,1.5] 3607 4081
5    var 4 (1.5,4.5] 2043 3699

    for (i in 1:4){
    c <- li[[i]]
    p<- ggplot(c) +
      geom_bar(aes(x=c$Range, y=c$wt0), stat = "identity")
    }

1 个答案:

答案 0 :(得分:0)

在@NelsonGon的第一行中,您可以映射到数据框列表上:

myPlots <- purrr::map(li, ~ggplot(.x, aes(x = Range, y = wt0)) + geom_bar(stat = "identity"))

这将为您提供ggplot对象的列表。您可以按索引print(myPlots[[1]])打印它们,也可以迭代所有它们:

purrr::walk(myPlots, print)

如果您在RStudio中,它可能仅显示最后一个图,但是在查看器窗格的左上角,有一些箭头可用于浏览打印的图。