首页 > 解决方案 > 在 R 中使用带有分组条形图和 facet_wrap 的 ggsignif 时如何定义数据

问题描述

已编辑

我以完全错误的方式使用 ggsignif 包:我不想从条形图中计算显着性值,但我只想在条形图上绘制我已经从单独分析中得到的值。为此,这个视频帮助了我很多https://www.youtube.com/watch?v=30mqU2vcx68

老问题

你好,我想问一个关于R软件中ggsignif包的问题。我想使用 facet_wrap 在成对的条形图顶部显示重要的星星,我正在关注这个线程Using ggsignif with grouped bar graphs and facet_wrap not working,但我无法将相同的代码应用于我的图表。正如我附上的图片一样,我想在我绘制的条形之间进行比较,但我不知道如何定义我正在比较的数据。

我使用这段代码来构建我的图表:

df <- data.frame(Group = c("S1", "S1", "S1", "S1", "S2", "S2", "S2", "S2"),
                  Sub   = c("A", "A", "B", "B", "A", "A", "B","B"),
                  col = c("red", "green", "red", "green","red", "green", "red", "green"),
                  Value = c(10,6,10,7,9,5,9,8)) 


ggplot(df, aes(x=Group, y=Value, fill=col)) + 
  scale_fill_manual("col", values = c("red" = "red", "green" = "green")) +
  facet_wrap(~Sub)  + coord_cartesian(ylim = c(0,15)) +
  geom_bar(stat="identity", position=position_dodge())

你知道我如何在类似于这个的图中定义重要星的坐标吗?非常非常感谢你!例子

标签: rggplot2

解决方案


显着性是指每组需要许多值的分布。但是对于每一组(例如 S1-green-A),您的数据集中只有一个值。因此,您绘制的是条形图而不是箱线图。您可以将更多值组合在一起,例如通过忽略颜色:

library(tidyverse)

df <- data.frame(
  Group = c("S1", "S1", "S1", "S1", "S2", "S2", "S2", "S2"),
  Sub = c("A", "A", "B", "B", "A", "A", "B", "B"),
  col = c("red", "green", "red", "green", "red", "green", "red", "green"),
  Value = c(10, 6, 10, 7, 9, 5, 9, 8)
)

df %>%
  unite(Group2, Group, Sub) %>%
  ggplot(aes(x = Group2, y = Value)) +
  geom_boxplot() +
  ggsignif::geom_signif(
    comparisons = list(
      c("S1_A", "S1_B"),
      c("S1_A", "S2_A")
    ),
    step_increase = 0.2
  )

在此处输入图像描述


推荐阅读