我正在尝试使用ggsignif
使用facet_wrap在成对的条形图顶部显示重要的星星。但是,我无法找到一种在每个方面显示一个重要条的方法。这是我的意思:
dat <- data.frame(Group = c("S1", "S1", "S2", "S2"),
Sub = c("A", "B", "A", "B"),
Value = c(3,5,7,8))
ggplot(dat, aes(Group, Value)) +
geom_bar(aes(fill = Sub), stat="identity", position="dodge", width=.5) +
geom_signif(y_position=c(5.3, 8.3), xmin=c(0.8, 1.8), xmax=c(1.2, 2.2),
annotation=c("**", "NS"), tip_length=0) +
scale_fill_manual(values = c("grey80", "grey20")) +
facet_grid(~ Group, scales = "free")
有没有办法确保每个方面都有自己的重要性标签?
答案 0 :(得分:2)
在我看来,主要问题是geom_signif层不知道变量将进入哪个面板,因为它没有提供data
参数。
我对软件包不那么熟悉,但是文档似乎建议使用manual = TRUE
将其绘制在不同的方面。这样做并针对抛出的错误进行一些调整,我可以进行以下工作:
ggplot(dat, aes(Group, Value)) +
geom_bar(aes(fill = Sub), stat="identity", position="dodge", width=.5) +
geom_signif(data = data.frame(Group = c("S1","S2")),
aes(y_position=c(5.3, 8.3), xmin=c(0.8, 0.8), xmax=c(1.2, 1.2),
annotations=c("**", "NS")), tip_length=0, manual = T) +
scale_fill_manual(values = c("grey80", "grey20")) +
facet_grid(~ Group, scales = "free")
关键似乎在于提供一个data
参数,分面代码可以从中推断出哪个面板中的哪个位。
答案 1 :(得分:0)
您是否考虑过使用ggpubr和stat_compare_means
?
https://rpkgs.datanovia.com/ggpubr/reference/stat_compare_means.html
由于您的示例仅包含一个观测值pr。栏不起作用,但是如果您包含多个观察值,您将获得所需的结果。
重写测试数据:
dat <- data.frame(A_S1 = sample(rnorm(20, 3, 1)),
B_S1 = sample(rnorm(20, 5, 1)),
A_S2 = sample(rnorm(20, 7, 1)),
B_S2 = sample(rnorm(20, 8, 1))) %>%
tidyr::gather("G", "value") %>%
tidyr::separate("G", c("Sub", "Group"))
使用ggpubr软件包绘制数据
ggerrorplot(dat, x = "Sub", y = "value",
facet.by = "Group",
error.plot = "pointrange") +
stat_compare_means(aes(label = ..p.signif..),
method = "t.test", ref.group = "A")