R 如果没有金额聚合的中间步骤,如何获得相同的绘图?

R 如果没有金额聚合的中间步骤,如何获得相同的绘图?,r,ggplot2,histogram,R,Ggplot2,Histogram,如果没有聚合列的中间计算,如何获得相同的绘图 我有以下数据: set.seed(1234) dat <- data.frame(month = gl(3,1,20), family= gl(5,1,20), amount= sample(1:3,20,rep=TRUE)) 要获取此绘图,请执行以下操作: 这是可行的,但我想要更简单的方法。我认为,使用stat\u sum或其他ggplot2技术,我可以做到这一点,而

如果没有聚合列的中间计算,如何获得相同的绘图

我有以下数据:

set.seed(1234)
dat <- data.frame(month = gl(3,1,20),
                  family= gl(5,1,20),
                  amount= sample(1:3,20,rep=TRUE))
要获取此绘图,请执行以下操作:

这是可行的,但我想要更简单的方法。我认为,使用
stat\u sum
或其他
ggplot2
技术,我可以做到这一点,而无需中间聚合步骤。大概是这样的:

 ## don't run this doesn't work
 ggplot(data=dat,aes(x=month,y=amount,fill=family))+
  geom_bar(stat = "sum")
我发现有一个参数
weight=
可以用来获取特定值的总和,而不是生成堆叠条形图时的计数。您必须提供
x
值、
fill=
值和
weight=amount
确保使用
amount
值的总和来确定钢筋高度。这也会自动确保
fill=
值按相同顺序排列

ggplot(dat,aes(month,fill=family,weight=amount))+geom_bar()


!非常简单,谢谢!也许你可以加上一些解释。。。看起来您不需要群aes…您需要群来获得正确的排序。我不知道为什么,也不知道ggplot2在引擎盖下做了什么。+1回答得好!我检查另一个答案,因为它似乎更一般(可以得到平均值或中位数)。。。
 ## don't run this doesn't work
 ggplot(data=dat,aes(x=month,y=amount,fill=family))+
  geom_bar(stat = "sum")
ggplot(dat,aes(month,fill=family,weight=amount))+geom_bar()
ggplot(data=dat,aes(x=month,y=amount,fill=family,group=family))+
  geom_bar(stat = "summary",fun.y=sum)