首页 > 解决方案 > 如何根据R中的中位数对箱线图进行排序

问题描述

我需要根据从最小到最大的平均值对 9 个箱线图进行排序。这是我到目前为止的代码。

install.packages("devtools")
library(devtools)
install_github("aloraine/loralib")
library(loralib)
genes=getGeneLengthsForPanel()
medians=getMedianGeneLengthsForPanel(genes)
sizes=getGenomeSizesForPanel()/10**6
main="Gene length and genome size"
xlab="genome sizes (Mb)"
ylab="log10(median gene length)"
xlim=c(0,4000)
plot(medians~sizes,pch=16,xlab=xlab,ylab=ylab,las=1,col="lightblue",main=main,xlim=xlim)
text(medians~sizes,labels=names(medians),cex=0.9,font=2,pos=4)
old.par=par(no.readonly=TRUE)
par(mar=c(5.1,7.5,4.1,2.1))
boxplot(log10length~species,data=genes,las=1,horizontal=TRUE,xlab=ylab)
par(old.par)

标签: r

解决方案


您可以在制作箱线图之前添加以下代码,它应该根据其中值重新排序物种。如果您更喜欢使用该方式订购,您只需在函数中median进行替换即可。meanaggregate

#Calculate the median for each species
medians_order<-aggregate(x = genes$log10length,                
          by = list(as.character(genes$species)),              
          FUN = median)  

#Order species by median value
medians_order<-medians_order$Group.1[order(medians_order$x, decreasing = T)]

#Reorder species as a factor according to their medians values order
genes$species<-factor(as.character(genes$species), levels = c(medians_order))

有序中位数图


推荐阅读