ggplot geom_bar with stat =" sum"

时间:2017-12-14 16:36:58

标签: r ggplot2

我想绘制一个沿两个维度汇总变量的条形图,一个将沿x展开,另一个将垂直展开(堆叠)。

我希望以下两条指令也能做同样的事情,但它们不会,只有第二条指令会提供所需的输出(我自己汇总数据)。

我想了解第一种情况下发生了什么,以及是否有办法使用ggplot2的内置聚合功能获取正确的输出。

library(ggplot2)
library(dplyr)
p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
  geom_bar(stat="sum",na.rm=TRUE)

产生这个情节:

enter image description here

p2 <- ggplot(diamonds %>%
                group_by(cut,color) %>%
                summarize_at("price",sum,na.rm=T),
              aes(cut,price,fill=color)) +
  geom_bar(stat="identity",na.rm=TRUE)

产生这张照片:

enter image description here

这里我们的酒吧顶部应该是,p1没有给出这些值:

diamonds %>% group_by(cut) %>% summarize_at("price",sum,na.rm=TRUE)
# # A tibble: 5 x 2
# cut    price
# <ord>    <int>
# 1      Fair  7017600
# 2      Good 19275009
# 3 Very Good 48107623
# 4   Premium 63221498
# 5     Ideal 74513487

1 个答案:

答案 0 :(得分:2)

您可能误解了stat的{​​{1}}选项。在这种情况下,由于您希望每个因子的值在每个条形图中相加,并且要根据每种颜色中总和的多少来着色条,您可以简化对geom_bar的调用它使用值作为条形的高度;因此&#34;总和&#34;每个类别中的所有值。例如,以下内容将提供所需的输出:

geom_col

或者,如果您想将p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + geom_col(na.rm=TRUE) 与stat调用一起使用,那么您希望使用&#34; identity&#34;统计:

geom_bar

有关更多信息,请考虑以下主题:https://stackoverflow.com/a/27965637/6722506