使用ggplot2对箱形图进行分组和重新排序

时间:2013-08-26 01:57:35

标签: r ggplot2 boxplot

我需要根据子组所属的组对箱形图(子组)进行分组并对它们(组)进行重新排序。

我使用的R脚本是:

data<-read.delim("clipboard")

p <- ggplot(data, aes(Class2,cM))

p <- p + geom_boxplot(aes(fill = factor(Class1))) +
     geom_jitter(alpha = 0.4, position = position_jitter(height = .01, width = .35)) +
     coord_flip()

我生成了这个(Class1 = group; Class2 = subgroup)。

grouping boxplots

请从here下载数据表。

如您所见,图表中没有组织组。如果你能帮助我,我将不胜感激。由于某些子组没有多个值,因此我们无法看到颜色来指示它们属于哪个组。如果您可以添加标签以显示哪个子组在哪个组中,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:0)

请提供文本格式的数据,而不是xls。

解决方案1:将Class2转换为因子并按所需顺序设置级别

data$Class2 <- factor(
    data$Class2, 
    levels = c("group1:b", "group1:c", "group2:a")
)

解决方案2:使用facet_wrap代替填充

ggplot(data, aes(x= Class2, y = cM)) + geom_boxplot() + 
  geom_jitter(alpha = 0.4, position = position_jitter(height = .01, width = .35)) +
  coord_flip() + 
  facet_wrap(~Class1)
ggplot(data, aes(x= Class2, y = cM)) + geom_boxplot() + 
  geom_jitter(alpha = 0.4, position = position_jitter(height = .01, width = .35)) +
  coord_flip() + 
  facet_wrap(~Class1, scales = "free_x")