问题描述
我使用以下代码通过ggplot2绘制小提琴图:
Cells1 %>%
ggplot(aes(x=IR_time,y=AreaShape_Area,fill=IR_time)) +
geom_violin(col=NA) +
guides(fill=FALSE) +
stat_summary(fun.data=data_summary,col = "black") +
theme_gray() +
ggtitle("Cell area after irradiation (3Gy)") +
ylab("\nArea (pixels)") +
xlab("\nDays after exposure to 3Gy\n") +
scale_fill_manual(values=wes_palette(n=5,name="Moonrise3")) +
theme(
plot.title = element_text(size=16),axis.title = element_text(size=12,face="bold"),axis.text = element_text(size=12))
这将产生以下情节:
现在,我要执行统计检验(此处为成对t检验),并将结果添加到绘图中。我使用rstatix包。 所以这是新代码:
stat.test <- Cells1 %>% pairwise_t_test(AreaShape_Area ~ IR_time,pool.sd=FALSE,p.adjust.method="bonferroni",ref.group="0") %>%
add_y_position()
Cells1 %>%
ggplot(aes(x=IR_time,fill=IR_time)) +
geom_violin(col=NA) +
guides(fill=FALSE) +
stat_summary(fun.data=data_summary,col = "black") +
theme_gray() +
ggtitle("Cell area after irradiation (3Gy)") +
ylab("\nArea (pixels)") +
xlab("\nDays after exposure to 3Gy\n") +
scale_fill_manual(values=wes_palette(n=5,name="Moonrise3")) +
theme(
plot.title = element_text(size=16),axis.text = element_text(size=12)) +
stat_pvalue_manual(stat.test)
但这会导致此错误:
错误:美学的长度必须为1或与数据(4)相同:填充
显然,这来自aes()中的fill = IR_time参数。 如果我用fill =“ blue”代替它,则可以使用,但没有错误消息。 但是我想同时使用两种颜色,具体取决于IR_time和绘图的统计信息。
您是否知道如何解决?
解决方法
我用相同的名称创建了一个大致相似的数据集:
set.seed(69)
Cells1 <- data.frame(
IR_time = factor(rep(c(0,2,4,8,12),each = 1000)),AreaShape_Area = rgamma(5e3,rep((2:6)^1.8,each = 1e3)) * 3e3)
您的代码需要一个名为data_summary
的函数,您没有包含它,而且似乎也没有在我可以在Google上找到的任何常见R包中。我猜是这样的:
data_summary <- function(x) {
data.frame(y = mean(x),ymin = mean(x) - sd(x),ymax = mean(x) + sd(x))
}
您没有包括正在使用的软件包,因此需要花费一些侦探才能弄清楚我们是否需要:
library(ggplot2)
library(wesanderson)
library(rstatix)
library(ggpubr)
现在,我们可以运行您的代码。据我所知,如果将行stat_pvalue_manual(stat.test)
更改为stat_pvalue_manual(data = stat.test,inherit.aes = FALSE)
,这应该很容易解决:
stat.test <- Cells1 %>%
pairwise_t_test(AreaShape_Area ~ IR_time,pool.sd = FALSE,p.adjust.method = "bonferroni",ref.group = "0") %>%
add_y_position()
Cells1 %>%
ggplot(aes(x = IR_time,y = AreaShape_Area,fill = IR_time)) +
geom_violin(col = NA) +
guides(fill = FALSE) +
stat_summary(fun.data = data_summary,col = "black") +
theme_gray() +
ggtitle("Cell area after irradiation (3Gy)") +
ylab("\nArea (pixels)") +
xlab("\nDays after exposure to 3Gy\n") +
scale_fill_manual(values = wes_palette(n = 5,name = "Moonrise3")) +
theme(
plot.title = element_text(size = 16),axis.title = element_text(size = 12,face = "bold"),axis.text = element_text(size = 12)) +
stat_pvalue_manual(data = stat.test,inherit.aes = FALSE)
由reprex package(v0.3.0)于2020-09-30创建