以mpg数据集为例,我想facet_grid()在每个制造商下仅列出相关模型的地方使用。
该代码似乎有效(左图)
library(ggplot2)
qplot(cty, model, data=mpg) +
facet_grid(manufacturer ~ ., scales = "free", space = "free")
Run Code Online (Sandbox Code Playgroud)
但这不是(对)
ggplot(mpg) +
geom_bar(aes(x = model, y = cty), stat = "identity") +
coord_flip() +
facet_grid(manufacturer ~ ., scales = "free", space = "free")
Run Code Online (Sandbox Code Playgroud)
我看到了此线程,但无法正常工作: 带刻面的水平条形图
有什么想法吗?
TL; DR:space="free"并scales="free"没有与工作coord_flip。相反,请使用包装中的geom_barh(水平条形几何图形)ggstance,从而避免使用coord_flip。详细信息如下。
space="free"并且scales="free"不要和coord_flip。这与绘制点无关紧要,因为使用点可以切换x轴和y轴,并且geom_point仍然可以工作,而无需使用coord_flip。但是,geom_bar期望值是y变量,类别是x变量,因此您需要使用coord_flip以获得水平条。
为了避免coord_flip,你可以使用水平GEOM geom_barh从ggstance封装,这样free在空间和尺度设置facet_grid将工作:
library(ggplot2)
library(ggstance)
ggplot(data=mpg, aes(x=cty, y=model)) +
geom_barh(stat="identity") +
facet_grid(manufacturer ~ ., scales = "free_y", space = "free_y")
Run Code Online (Sandbox Code Playgroud)
请注意,上面的代码创建了一个堆叠的条形图,其中cty给定所有汽车的mpg 值一个model堆叠在另一个之上,这是荒谬的。例如,如果您设置colour="green"在内部,则可以看到此内容geom_barh。我认为此图仅用于说明,但我想指出这一点是为了完整性。
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |