【问题标题】:Change line chart to stacked line chart ggplot将折线图更改为堆叠折线图 ggplot
【发布时间】:2020-12-13 08:36:43
【问题描述】:

我有一个非常基本的问题,但找不到任何帮助。

我正在使用 ggplot 绘制一个包含五行的“正常”折线图。我的 df 由一个 Year 列和 5 个 value 列组成:

ggplot(data = df, aes(x = Year)) +
  geom_line(aes(y = y1, colour = "y1")) +
  geom_line(aes(y = y2, colour = "y2")) +
  geom_line(aes(y = y3, colour = "y3")) +
  geom_line(aes(y = y4, colour = "y4")) +
  geom_line(aes(y = y5, colour = "y5"))

我想将其更改为 堆叠 折线图,线条之间有填充区域。是否可以不用过多更改上面的命令?

谢谢!

【问题讨论】:

标签: r ggplot2


【解决方案1】:

不确定您所说的“无需过多更改代码”是什么意思。 ggplot2 建立在数据整洁的原则之上。因此,如果您将数据转换为“整洁数据”,则使用ggplot2 进行绘图会变得更加容易,这在您的情况下意味着使用例如将数据转换为长格式。 tidyr::pivot_longer。这样你就可以只用两行来制作你的情节。

要将堆叠区域切换到geom_area,请映射fill aes 而不是color 并设置position="stack"

使用一些随机示例数据试试这个:

library(ggplot2)
library(tidyr)
library(dplyr)

set.seed(42)

df <- data.frame(
  Year = 2000:2020,
  y1 = runif(21),
  y2 = runif(21),
  y3 = runif(21),
  y4 = runif(21),
  y5 = runif(21)
)

df %>% 
  pivot_longer(-Year) %>% 
  ggplot(aes(x = Year, y = value, fill = name)) +
  geom_area(position = "stack")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多