控制position_dodge的层次结构

时间:2016-10-26 14:52:54

标签: r ggplot2

如果使用躲避条形图,是否有办法控制哪一个元素在另一个元素前面绘制。

 ggplot(mtcars, aes(x=factor(cyl), fill=factor(vs))) +
    geom_bar(position= position_dodge (width = - 0.5))

enter image description here

在此示例中,蓝色条形图绘制在红色条形图的前面。是否可以在不破解alpha值的情况下撤销订单?

1 个答案:

答案 0 :(得分:2)

你在这里的控制是有限的。使用因子水平,我们可以控制i)fill颜色排序和ii)使用position_dodge group的排序。

以下是四个选项:

p1 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 0:1), group = factor(vs, 0:1))) +
  geom_bar(position = position_dodge(width = - 0.5))

p2 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 0:1), group = factor(vs, 1:0))) +
  geom_bar(position = position_dodge(width = - 0.5))

p3 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 1:0), group = factor(vs, 0:1))) +
  geom_bar(position = position_dodge(width = - 0.5))

p4 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(vs, 1:0), group = factor(vs, 1:0))) +
  geom_bar(position = position_dodge(width = - 0.5))

library(cowplot)
plot_grid(p1, p2, p3, p4, align = 'hv')

enter image description here

所以似乎只有躲避令很重要。至少在开发版中,右侧栏始终绘制在左侧栏的前面。