示例数据

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)

我就是这样使用ggploy的. 我得到了满意的效果

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'))
       )

我不想将列表转换为一个帧

推荐答案

幸运的是,ggplot可以添加几何图形的列表:

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

为了演示,我将通过更改 colored颜色 来进行稍微不同的操作:

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

(稍微厚一点, colored颜色 也不一样,这里是演示.)

enter image description here

尽管坦率地说,我认为通常情况下,将它们组合在一起并使用一个单独的帧会更好,使用gglot原生的aesthethetic映射来表示 colored颜色 (即使您避免使用图例).

ggplot() +
  geom_line(aes(a1, b1, group = id, color = id),
            data = dplyr::bind_rows(df_all, .id = "id")) +
  scale_color_manual(
    values = c("1"="blue", "2"="darkgreen", "3"="red")
  )

enter image description here

我冒昧地在美学上增加了color=id,再次表明有不同的线在那里.(不过,group=id需要留下来.)

bind_rows不是必须的,如果您不使用dplyr,我们也可以使用data.table::rbindlist(.., idcol="id").基数R需要更多的工作才能将ID列放入其中,尽管这远远不是令人望而却步的.

然而,此方法需要的一件事是美学变量的名称相同,因此a1b1在所有帧中都需要相同.(如果不是,在组合它们时重命名它们可能很容易……)

R相关问答推荐

导入到固定列宽的R中时出现问题

使用scale_x_continuous复制ggplot 2中的离散x轴

在发布到PowerBI Service时,是否可以使用R脚本作为PowerBI的数据源?

derrr summarise每个组返回多行?

在特定Quarto(reveal.js)幻灯片上隐藏徽标

使用strsplit()将向量操作为数据框

使用geom_segment()对y轴排序

为什么当用osmdata映射R时会得到相邻状态?

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

展开对数比例绘图的轴(添加填充)

条形图顶部与其错误条形图不对齐

`夹心::vcovCL`不等于`AER::tobit`标准错误

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

R仅当存在列时才发生变异

是否从列中删除★符号?

使用&Fill&Quot;在gglot中创建 colored颜色 渐变

在R中,有没有什么方法可以根据一列中的多个值来过滤行?

创建两个变量组合的索引矩阵

R中的交叉表

具有某些列的唯一值的数据帧