在构面的外面/之间添加重要线

时间:2018-09-08 19:45:54

标签: r ggplot2

我想在3个方面添加重要的恒星,以进行比较。

我在线搜索Google,但是在情节之外添加内容太复杂了。有一个ggsignif软件包,但它对方面没有任何作用(https://github.com/const-ae/ggsignif/issues/22)。使用gridExtra似乎可行,但我做不到。

可以轻松地绘制星星,而不是刻面。但是我必须使用刻面在左侧留有单独的地毯。如果您知道如何在一个样地中放置单独的地毯,那么它也应该可以解决问题。

这是我要添加内容的代码和情节:

library(ggplot2)
ToothGrowth$dose = factor(ToothGrowth$dose)
ggplot(ToothGrowth, aes(x='', y=len, color=dose)) +
  geom_boxplot() +
  geom_rug(sides="l") +
  facet_grid(. ~ dose)

enter image description here

我想要的是:

enter image description here

很抱歉。线宽应相同。最终结果应该与此类似,但对于方面

enter image description here

1 个答案:

答案 0 :(得分:2)

这是一种解决方法-绘制两个图(一个用于重要性注释,另一个用于盒图)。

library(ggplot2)
library(ggsignif)
ToothGrowth$dose <- factor(ToothGrowth$dose)

绘制重要性注释。不要在此处使用boxplot并将提示设置为0(此处仅使用一个比较,因为其他比较会从统计测试中返回错误,但是我假设这只是示例数据集)。

p1 <- ggplot(ToothGrowth, aes(as.factor(dose), len)) +
    geom_signif(comparisons = list(c("1", "2")), tip_length = 0.005) +
    coord_cartesian(ylim = c(35, 35.5)) +
    theme_void()

绘制具有不同x轴的箱线图(需要在ggsignif中指定比较组)

p2 <- ggplot(ToothGrowth, aes(factor(dose), len)) +
    geom_boxplot() +
    geom_rug(sides = "l") +  
    facet_grid(. ~ dose, scales = "free_x") +
    labs(x = NULL) +
    theme(axis.text.x = element_blank(),
          axis.ticks.x = element_blank())

geom_signif的顶部geom_boxplotfacet_wrap一起绘制图

egg::ggarrange(p1, p2, heights = c(2, 10))

enter image description here