我想绘制一个沿两个维度汇总变量的条形图,一个将沿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
答案 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