数据框列表上的ggplot

问题描述 投票:0回答:1

示例数据

df_1 <- data.frame(a1 = abs(rnorm(50, 1, 1)),
                   b1 = rnorm(50, 1, 1))  
df_2 <- data.frame(a1 = rnorm(50, 1, 10),
                   b1 = rnorm(50, 1, 1))
df_3 <- data.frame(a1 = rnorm(50, 1, 10),
                   b1 = rnorm(50, 1, 1))

df_all <- list (df_1, df_2, df_3)

我像这样使用ggplot 我得到了满意的效果

ggplot() +
  geom_line(data = df_all[[1]], aes(x = a1, y = b1), color = "blue", size = 0.05) +
  geom_line(data = df_all[[2]], aes(x = a1, y = b1), color = "blue", size = 0.05) + 
  geom_line(data = df_all[[3]], aes(x = a1, y = b1), color = "blue", size = 0.05)

数据帧的数量每天都在变化,因此需要更好的解决方案。 我想到了这个解决方案(当然不正确)

lapply(df_all, ggplot()+ 
         function(x) (geom_line(x, aes(x=a1, y=b1), color='blue'))
       )

我不想将列表转换为一帧

r ggplot2 dplyr
1个回答
0
投票

幸运的是,

ggplot
可以添加几何列表:

ggplot() +
  lapply(df_all, function(dat) geom_line(data=dat, aes(a1, b1), color="blue", size=0.05))

为了演示,我将通过更改颜色来稍微不同地做到这一点:

ggplot() +
  Map(df_all, c("blue","darkgreen","red"),
      f = function(dat,col) geom_line(data=dat, aes(a1, b1), color=col))

(稍厚且颜色各异,供此处演示。)

© www.soinside.com 2019 - 2024. All rights reserved.