[英]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_bar
的stat
选项。 在这种情况下,由于您希望将每个因子的值汇总到每个小节中,并根据每种颜色中总和的多少对小节进行着色,因此可以简化对使用这些值的geom_col
的调用作为酒吧的高度; 因此“求和”每个类别中的所有值。 例如,以下将给出所需的输出:
p1 <- ggplot(diamonds,aes(cut,price,fill=color)) +
geom_col(na.rm=TRUE)
另外,如果要在统计调用中使用geom_bar
, geom_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.