在ggplot

时间:2018-01-04 07:33:09

标签: r ggplot2 facet

我有一个包含5组的数据框。 我想使用ggplot按组分组我的数据。我需要从右到左订购面板,而不是从左到右(默认)。

df <- data.frame(group=letters[1:5],
       x=1:5,
       y=1:5)
ggplot(df, aes(x,y)) + 
geom_point(size=3) + 
facet_wrap(~group)

默认情况下,面板从左到右排序,因此组'a'出现在图表的左上角。右下方的面板是空的(因为只有5组)。我希望面板从右到左显示。也就是说,'a'应该出现在右上角,而左下角的面板应该是空的。有什么想法吗?

注意:问题不在于面板的标签。它也不是用factor()重新排序组。 我查看了facet_wrap()帮助,但唯一的选项是处理标签的'switch'和'strip.position'参数。 'dir'参数允许垂直或水平位置,这不是我想要的。

提前致谢

1 个答案:

答案 0 :(得分:3)

这是一个有点hacky的解决方案,因为它需要手动定位。我们创建一个绘图函数,然后分别绘制第一行图(df的第1行到第3行和第df行的第4行)。我们使用{ {1}},但我们在第二行的左端添加了一个只有y轴的空白图,以创建空白区域。

需要手动调整grid.arrange参数,以使空白图占据恰当的空间,以便其他两个图与上图重叠。

widths

enter image description here