堆积的ggplot2条形图中的连续轮廓

时间:2018-03-11 18:15:09

标签: r ggplot2

假设我的数据框 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

我想绘制每个,无论其类型如何。有了ggplot,我可以做到

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

产生以下图:

Plot example

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

我是否可以通过某种方式绘制每年整个酒吧的轮廓,忽略个别观察结果?

我希望实现的目标是:

enter image description here

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:我知道我可以通过创建一个新的数据框来实现所需的效果,该数据框的变量的总数。我很感兴趣,如果有一个ggplot2的直接解决方案,并不要求我创建一个新的数据框。

1 个答案:

答案 0 :(得分:5)

您可以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")

enter image description here