【问题标题】:Manually plotting significance relations between sub-groups on ggplot2 barplot在 ggplot2 barplot 上手动绘制子组之间的显着性关系
【发布时间】:2020-07-16 06:41:07
【问题描述】:

我一直在尝试使用ggsignifggpubrggplot2 条形图上为一组子集手动标记重要性条,但运气不佳。数据类似于以下 MWE:

set.seed(3)
## create data
df <- data.frame(activity = rep(c("Flying", "Jumping"), 3),
                 mean = rep(rnorm(6, 50, 25)),
                 group = c(rep("Ecuador", 2),
                           rep("Peru", 2),
                           rep("Brazil", 2)))
## plot it
ggplot(df, aes(x = activity, y = mean, fill = group)) +
    geom_bar(position = position_dodge(0.9), stat = "identity",
             width = 0.9, colour = "black", size = 0.1) +
    xlab("Activity") + ylab("Mean")

我想手动指定重要性标签的地方,比如“飞行”上的巴西/厄瓜多尔和“跳跃”上的厄瓜多尔/秘鲁之间。有谁知道如何正确处理此类数据,例如ggsignif ? 有没有办法通过名称来引用每个条形图,而不是尝试计算它的 x 轴位置?

【问题讨论】:

  • 如果您要在许多子组中显示重要性,我会推荐表格。如果您真的需要绘制条形图,我认为@dc37 展示了一个很好的方法。您也可以使用 ggpubr,但对于子组,您需要保持 ggpubr 语法,请参阅此处stackoverflow.com/questions/60772321/…
  • 我同意这会与许多子组混淆,尽管在我的情况下我有很多子组,但只想显示一个子集的重要性。但是@dc37 的解决方案看起来很适合我的目的。

标签: r ggplot2 ggpubr significance


【解决方案1】:

如果您知道要在哪个条形图上添加重要性标签,您可以这样做:

library(ggsignif)
library(ggplot2)

ggplot(df, aes(x = activity, y = mean, fill = group)) +
  geom_bar(position = position_dodge(0.9), stat = "identity",
           width = 0.9, colour = "black", size = 0.1) +
  xlab("Activity") + ylab("Mean")+
  geom_signif(y_position = c(60,50), xmin = c(0.7,2), xmax = c(1,2.3),
              annotation=c("**", "***"), tip_length=0)

它回答了你的问题吗?

【讨论】:

  • 谢谢,您如何计算出 xmin 的正确值以确保它们居中? (在真实的情节中,我有额外的群体)。
  • 不客气;)。为了放置您的 xmin 和 xmax 值,您必须认为每个 x 轴标签都是从 1 开始计算的。所以 Flying 的中心是 1,Jumping 的中心是 2。所以,你可以四处玩耍以获得适当的标签.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
相关资源
最近更新 更多