我将使用 ggplot2 包标配的钻石数据集来说明我正在寻找的内容。
我想构建一个像这样的图:
library(ggplot2)
ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge")
但是,我想返回一个连续变量的平均值,而不是计数。我想返回切割和颜色并获得平均克拉数。如果我输入这段代码:
ggplot(diamonds, aes(carat, fill=cut)) + geom_bar(position="dodge")
我的输出是克拉数与切工的对比。
有人知道怎么做吗?
最佳答案
您可以获得一个新的数据框,其中 mean(carat)
按 cut
和 color
分组,然后绘制:
library(plyr)
data <- ddply(diamonds, .(cut, color), summarise, mean_carat = mean(carat))
ggplot(data, aes(color, mean_carat,fill=cut))+geom_bar(stat="identity", position="dodge")
如果您想要更快的解决方案,您可以使用 dplyr
或 data.table
使用dplyr
:
library(dplyr)
data <- group_by(diamonds, cut, color)%.%summarise(mean_carat=mean(carat))
使用data.table
:
library(data.table)
data <- data.table(diamonds)[,list(mean_carat=mean(carat)), by=c('cut', 'color')]
两者的绘图代码相同。
关于r - ggplot2 具有多个因素的连续条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418240/