在facet_grid中对嵌套构面标签进行排序

时间:2016-03-24 18:03:33

标签: r ggplot2 label facet

所以,我正在尝试制作一个由三个不同变量构成的图表网格。我可以很好地生成图形网格,我唯一的问题是标签的放置顺序似乎不正常。以下是我正在做的一个简单示例:

library(ggplot2)
data(mtcars)
qplot(mpg, wt, data=mtcars) + facet_grid(cyl +am ~ vs, labeller = label_both)

产生以下图:

enter image description here

现在,在大多数情况下,情节看起来很棒,但对于右侧的标签,我们看到 cyl 标有"第一个" (即接近绘图)并且 am 嵌套在外面,但是绘制图的方式很明显,小平面显示时 am 嵌套在缸的。

因此,我想更改列出标签的顺序,以便 级别列在 cyl 级别以反映布局。我试图搜索" facet_grid订单标签等#34;或者"嵌套的facet标签命令ggplot2",但我发现的几乎所有结果都与更改给定facet的实际级别的顺序有关,而不是我所描述的问题。另外,我调查了贴标机,但是在确定标签放置后似乎调用了该​​函数。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您看到的标签排序似乎只是label_both()命令标签的标准方式。如果您在公式中交换变量的顺序,标签也会更改位置,但同时也会重新排序行,这可能不是您想要的:

label_rev <- function(labels, multi_line = TRUE, sep = ": ") {
  label_both(rev(labels), multi_line = multi_line, sep = sep)
}

enter image description here

你确实可以使用贴标机来解决这个问题,正如alistaire所建议的那样。以下函数以相反的顺序调用qplot(mpg, wt, data=mtcars) + facet_grid(cyl + am ~ vs, labeller = label_rev) 标签数据框的列:

textbox1.text

它导致了预期的结果:

button1

enter image description here