繁体   English   中英

ggplot geom_bar,stat =“ sum”

[英]ggplot geom_bar with stat = “sum”

我想绘制一个条形图,将一个变量沿两个维度相加,一个将沿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

您可能会误解geom_barstat选项。 在这种情况下,由于您希望将每个因子的值汇总到每个小节中,并根据每种颜色中总和的多少对小节进行着色,因此可以简化对使用这些值的geom_col的调用作为酒吧的高度; 因此“求和”每个类别中的所有值。 例如,以下将给出所需的输出:

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

另外,如果要在统计调用中使用geom_bargeom_bar使用“身份”统计:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM