r - 如何根据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)
解决方案
您可以在制作箱线图之前添加以下代码,它应该根据其中值重新排序物种。如果您更喜欢使用该方式订购,您只需在函数中median
进行替换即可。mean
aggregate
#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))
推荐阅读
- perl - 无法构建 Perl 模块 Net::MAC::Vendor
- c# - 从 appsettings.json 将多个端点路由添加到 .net 核心控制台应用程序
- java - 在 android 应用程序中发布 Api Rest 请求
- javascript - 将对象数组中的字符串格式化为单个字符串
- python - 使用 s3 和 python 编写和读取列表列表
- c++ - 编写程序使用动态解决货币行问题
- javascript - 为什么我的悬停功能有效,但我的 onmouseleave 功能无效?(在控制台中调用该函数有效)
- node.js - Cordova Electron 应用程序,openFileDialog 事件
- python - 数据框列中存在的字典中键的映射值
- c# - 无法解析“Microsoft.AspNetCore.Identity.UserManager”类型的服务