我们以mpg
数据集为例,特别是class
和cyl
列。我可以看到每个class
有多少条目,并根据cyl值区分填充颜色:
library(ggplot2)
p <- ggplot(mpg)
p <- p + geom_bar(mapping=aes(x=class, fill=factor(cyl)), position=position_dodge())
print(p)
我希望看到的是,根据class
的不同值,平均条目数(每cyl
)。基本上,如果你看一下上面的情节,我想要每个类一个单独的条,其高度应该是该类彩色条的平均高度。
我能够通过预处理数据帧来获得这个结果,例如:
df <- aggregate(formula=cyl~class, data=mpg, FUN=function(x) { length(x) / length(unique(x)) })
p <- ggplot(df)
p <- p + geom_bar(mapping=aes(x=class, y=cyl), stat='identity')
p <- p + ylab('average count')
这提供了所需的输出:
然而,考虑到ggplot2有多强大,我想知道这是否可以通过ggplot函数实现。我想这涉及使用特定的stat
(可能与group=cyl
?),但我无法做到。