箱型图绘制时报错处理

在批量绘制箱型图时,使用自定义的函数,出现了不能比较统计学差异的问题。

具体问题

数据特征

数据是行是样本,列是临床特征+基因表达



想要绘制不同临床特征中,基因表达箱型图

写一个画箱型图的函数

myboxplot <- function(gene, phenotype){
  ggboxplot(
    data, x = phenotype, y = gene,
    palette = "npg",fill = phenotype, 
    bxp.errorbar = T, bxp.errorbar.width = 0.2,outlier.shape = NA
  )+
    xlab(label = 'Group')+
    ylab(label = paste(gene, ' Expression', sep = '\t'))+
    rotate_x_text(angle = 45)+
    stat_compare_means(aes(group = phenotype), 
                       label = "p.format",label.x =2, size = 2)+
    theme(title = element_text(size = 18,  color = "black", face = "bold"),
          plot.title = element_text(hjust = 0.5,vjust = 0.5),
          axis.text  = element_text(size = 10, color = "black", face = "bold", vjust = 0.5, hjust = 0.5),
          axis.line = element_line(size = 0.8),
          legend.title = element_text(size = 9)
    )
}

使用函数画图

myboxplot(gene = "IGF2BP2", phenotype = "grade")

遇到的问题和错误

图能够出来,但是会报错

> myboxplot(gene = "IGF2BP2", phenotype = "grade")
Warning messages:
1: Ignoring unknown aesthetics: fill 
2: Unknown or uninitialised column: `p`. 
3: Computation failed in `stat_compare_means()`:
argument "x" is missing, with no default 

主要意思就是stat_compare_means()出现错误

根据报错内容看,主要是在stat_compare_means()函数中,不能识别最先给与自定义函数的内容

问题解决

改变名称的类型

既然不能识别,那么就把字符串改成向量,或者其他什么不带引号的样子
这个时候使用as.nameas.symbol这两个函数,确实可以把引号去掉,但是带入其中依然不能解决问题

查看文档

有问题的时候,一直不能很好的解决,那么查看文档,看看这个函数作者到底怎么处理的,或者标准是什么样子。

查看文档的小技巧:光标点到函数位置,按F1键就可以弹出文档

这个时候,发现自己画蛇添足了。

文档中的例子是

#  Add p-value
p + stat_compare_means()
# Change method
p + stat_compare_means(method = "t.test")

不需要在stat_compare_means函数中加需要比较的,因为上面已经进行了定义。

这个画图函数是从个人的这篇帖子摘过来的批量处理——for循环画图,

也不知道自己当时是怎么写的这个函数,或者说这个函数在那篇当中是正确的吧

修改函数

myboxplot <- function(gene, phenotype){
  ggboxplot(
    data, x = phenotype, y = gene,
    palette = "npg",fill = phenotype, 
    bxp.errorbar = T, bxp.errorbar.width = 0.2,outlier.shape = NA
  )+
    xlab(label = 'Group')+
    ylab(label = paste(gene, ' Expression', sep = '\t'))+
    rotate_x_text(angle = 45)+
    stat_compare_means( 
                       label = "p.format",label.x.npc = 0.35, size = 3)+
    theme(title = element_text(size = 18,  color = "black", face = "bold"),
          plot.title = element_text(hjust = 0.5,vjust = 0.5),
          axis.text  = element_text(size = 10, color = "black", face = "bold", vjust = 0.5, hjust = 0.5),
          axis.line = element_line(size = 0.8),
          legend.title = element_text(size = 9)
    )
}

myboxplot(gene = "IGF2BP3", phenotype = "grade")

修改后,顺利出图,P值出现

看来需要把绘制这个图形的函数再修改一下,使其能够更泛化,适应范围更广

你可能感兴趣的:(箱型图绘制时报错处理)