我想绘制一个条形图,沿两个维度对变量求和,一个将沿 展开x
,另一个将垂直展开(堆叠)。
我希望以下两条指令能做同样的事情,但它们没有,只有第二条给出了所需的输出(我自己汇总数据的地方)。
我想了解在第一种情况下发生了什么,以及是否有办法使用ggplot2
的内置聚合功能来获得正确的输出。
library(ggplot2)
library(dplyr)
p1 <- ggplot(diamonds,aes(cut,price,fill=color)) +
geom_bar(stat="sum",na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
产生这个情节:
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)
Run Code Online (Sandbox Code Playgroud)
产生这张图片:
这是我们的条形顶部应该在哪里,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
Run Code Online (Sandbox Code Playgroud)