ggplot geom_bar与STAT =“总和”(ggplot geom_bar with st

2019-09-30 18:14发布

我要绘制的条形图总结沿两个维度的变量,一个将沿传播x ,另一个将被垂直扩散(堆叠)。

我希望两个以下说明做相同的,但他们不这样做,只有一个第二给出了所需的输出(在这里我汇总数据我自己)。

我想知道这是怎么回事在第一种情况下,如果有使用的方式ggplot2的内置聚合功能得到正确的输出。

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

产生这个情节:

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)

产生这样的画面:

这里就是我们的酒吧的顶部应,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

Answer 1:

你可能会误解stat的选项geom_bar 。 在这种情况下,既然你想每个因子的值进行总结各条中,并根据断条五色这有多总和是在每种颜色,可以简化呼叫geom_col它使用值作为高度的杆; 因此“总和”所有的每个类别内的值。 例如,下面将得到所需的输出:

p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
        geom_col(na.rm=TRUE)

另外,如果你想使用geom_bar有一个统计的呼叫,然后你要使用的“身份”的数据:

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

欲了解更多信息,可以考虑这个线程: https://stackoverflow.com/a/27965637/6722506



文章来源: ggplot geom_bar with stat = “sum”
标签: r ggplot2