【问题标题】:Continuous outline in stacked ggplot2 barplot堆叠的ggplot2条形图中的连续轮廓
【发布时间】:2018-03-11 18:15:09
【问题描述】:

假设我有一个看起来像这样的数据框 df

Year   value     type
2000    150    Type 1
2000    200    Type 1
2000     70    Type 2
2000     20    Type 1
2005     50    Type 2
2005     80    Type 2
2005     50    Type 1
2005     50    Type 1

我想绘制每个 Yeartotal ,无论类型如何。用ggplot,我可以做到

ggplot(df) +
    geom_col(aes(x = x, y = y),
             colour = "black", fill = "dodgerblue2")

产生以下情节:

此图显示每个观察值之间的分隔(由于 /color/ 参数,黑线分隔框),如果我只对总数感兴趣,这是不希望的。

有没有什么方法可以让我画出每年整个条形图的轮廓,而忽略个别观察?

我希望实现的是这样的:

P.s.1:为 MWE 生成数据帧的代码

df <- data.frame(
    year = as.factor(c(2000, 2000, 2000, 2000, 2005, 2005, 2005, 2005)),
    value = c(150, 200, 70, 20, 50, 80, 50, 50),
    type = as.factor(c("Type 1", "Type 1", "Type 2", "Type 1",
                       "Type 2", "Type 2", "Type 1", "Type 1")))

P.s.2:我知道我可以通过创建一个新的数据框来达到预期的效果,其中包含变量 valueyear 的总计数。我很感兴趣是否有 ggplot2 的直接解决方案,它不需要我创建新的数据框。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可以将stat_summary 与函数sum()col 的geom 一起使用。

    library(ggplot2)
    library(dplyr)
    
    df <- data.frame(
      year = as.factor(c(2000, 2000, 2000, 2000, 2005, 2005, 2005, 2005)),
      value = c(150, 200, 70, 20, 50, 80, 50, 50),
      type = as.factor(c("Type 1", "Type 1", "Type 2", "Type 1",
                         "Type 2", "Type 2", "Type 1", "Type 1")))
    
    ggplot(df) +
      stat_summary(aes(x = year, y = value),
                   fun.y = sum,
                   geom = "col",
                   colour = "black",
                   fill = "dodgerblue2")
    

    【讨论】:

    • 正是我想要的。谢谢!
    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2014-12-08
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    相关资源
    最近更新 更多