【问题标题】:How to plot multiple graphs into one using ggplot? [duplicate]如何使用 ggplot 将多个图形绘制成一个图形?
【发布时间】:2021-04-01 06:08:35
【问题描述】:

如何将多个折线图绘制成一个?我有四个独立的数据集,它们都具有相同的 x 轴(就像时间一样,即全部按顺序排列)。

所以数据集看起来像这样

x        y1    y2    y3    y4
12350  0.032  0.283 0.043  0.012
13200  0.234  0.229 0.934  0.002
15504  0.001  0.510 0.394. 0.294
17709  0.923  0.394 0.022  0.202
.
.
.

问题是,我在 ggplot 中输入什么?我可以很好地绘制单个图,但不确定如何组合它们。添加下面的两个图不起作用,也许我错过了一些非常明显的东西......

ggplot(df, aes(x=x, y=y1)) + geom_line()
ggplot(df, aes(x=x, y=y2)) + geom_line()

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    使用data.table 包(如果您没有安装该包,请使用install.packages('data.table'))可以这样做:

    library(data.table)
    library(ggplot2)
    
    data_long <- melt(data, id.vars = 'x')
    
    ggplot(data_long, aes(x = x, y = value, color = variable)) +
       geom_line()
    
    

    melt 将自动生成列 variable(包含列 y1-y4 的名称)和 value(您猜对了,包含值)。

    【讨论】:

      【解决方案2】:

      听起来你想要一个有四条曲线的图。您可以使用任意数量的转换函数将数据框从宽转换为长。基本上,您希望得到一个包含三列的数据框,一列用于 x 值,一列用于 y 值,另一列带有一个标识符,显示原始 y 中的哪一个与每个 x,y 对相关联。

      x     y     id
      12350 0.032 y1
      12350 0.028 y2
      12350 0.043 y3
      12350 0.012 y2
      13200 0.234 y1
      etc.
      

      然后使用 id group 审美来单独绘制曲线。如果你搜索“从宽到长”,你会得到很多关于如何进行转换的建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-20
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        • 2021-04-22
        相关资源
        最近更新 更多