Как отсортировать боксы на основе медианы в R - PullRequest
0 голосов
/ 25 февраля 2020

Мне нужно отсортировать 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)

1 Ответ

1 голос
/ 25 февраля 2020

Вы можете добавить следующий код перед выполнением вашего боксплота, и он должен изменить порядок видов в соответствии с их медианным значением. Если вы предпочитаете заказывать средства, вам нужно просто заменить 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))

Ordered median plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...