我已经设置了因子级别,以控制堆叠条形图在ggplot的geom_col中出现的顺序。然后,我想对条形图附加一个方面。当我在geom_col的aes中添加“组”时,它将丢失条形的顺序。
这个最小的例子导致了问题,尽管我希望在削减问题上没有遗漏任何关键的复杂因素。我故意在不直观的排名中命令cyl的级别。在第一个图表中,排名很荣幸。在多面版本中不是。
library(ggplot2)
m.cars <- mtcars
m.cars$cyl <- factor(m.cars$cyl,levels = c(6,8,4))
m.cars$carb <- factor(m.cars$carb)
m.cars$vs <- factor(m.cars$vs,levels = c(1,0))
ggplot(data = m.cars) +
geom_col(aes(x = gear,y = mpg,fill = cyl))
ggplot(data = m.cars) +
geom_col(aes(x = gear,fill = cyl,group = vs)) +
facet_wrap(~vs)
我认为未设置因子水平时分类变量的默认排序是字母顺序的。在我的数据中,与示例中的cyl等效的堆栈排序变量的值已经是字符。这不是最佳选择,但我尝试更改基本数据,以使所需的堆叠顺序按字母顺序排列。与此示例类似,我将档位从4、6和8更改为“ b4”,“ a6”和“ c8”。没关系。
这个问题与Ordering of faceted stacked barplot with ggplot2有一些相似之处,但是他们努力控制的顺序是构面的顺序,而对我来说,这是钢筋堆叠的顺序。
我可能不得不求助于ggplot bar plot with facet-dependent order of categories的想法,但我希望改用构面。 “做到这一点的唯一方法是制作单独的图并使用来自gridExtra包的grid.arrange。但是我同意这通常不会产生非常好的图。”我有很多传说中的并发症,等等。