使用ggplot2创建一个直方图,水平轴上使用因子,填充颜色使用另一个因子,并采用分离位置。我的问题是,填充因子有时对于水平因子的某个值只取一个值,由于没有任何东西可以躲避,所以条形图占据了整个宽度。是否有办法使其不躲避任何内容,以便所有条形图的宽度都相同?或者等效地绘制0的图表?
ggplot(data = mtcars, aes(x = factor(carb), fill = factor(gear))) +
geom_histogram(position = "dodge")
这个回答 提供了一些想法。虽然该问题是在发布新版本之前提出的,但也许会有所变化?使用 facets(也可以在 这里 找到)不适合我的情况,尽管我想编辑数据并使用geom_bar
也能够解决问题,但感觉不够优雅。此外,当我试图使用facetting时
ggplot(mtcars, aes(x = factor(carb), fill = factor(gear))) +
geom_bar() + facet_grid(~factor(carb))
我遇到了错误信息 "Error in layout_base(data, cols, drop = drop): At least one layer must contain all variables used for facetting"。
我想我可以生成一个计数的数据框,然后使用 geom_bar
。
mtcounts <- ddply(subset(mtcars, select = c("carb", "gear")),
.fun = count, .variables = c("carb", "gear"))
在没有的级别上填充0。有人知道这是否有效或是否有更好的方法吗?