假设我的数据框 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")
产生以下图:
这个图显示了每个观察之间的分离(由于/ color / argument而分隔方框的黑线),如果我只对总数感兴趣,这是不希望的。
我是否可以通过某种方式绘制每年整个酒吧的轮廓,忽略个别观察结果?
我希望实现的目标是:
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的直接解决方案,并不要求我创建一个新的数据框。
答案 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")