R语言中如何按基因密度自动对柱状图进行排序
解决方法
你只需要提前对数据框按gene_density列做排序,再将排序后的数据传入barplot即可实现自动排序,无需手动指定分类顺序。
修改后完整代码
species_name <- c("hepatitis D","HIV-1","influenza A","pandoravirus") genome_size <- c(1.7, 9.7, 14, 2800) gene_counts <- c(1,9,11 ,2500) gene_density = gene_counts / (genome_size/1000) expn <- data.frame (species_name, genome_size, gene_counts, gene_density) # 按基因密度降序排序,若需要升序排列,去掉order里的负号即可 expn_sorted <- expn[order(-expn$gene_density), ] barplot(expn_sorted$gene_density ,names.arg=expn_sorted$species_name,ylim=c(0,1000),xlab="species_name",ylab="gene_density",col="coral",main="Gene Density",border="coral2")
补充说明
order()是R内置的排序函数,传入列名前加负号代表按该列降序排列,不加负号默认升序- 如果你后续使用ggplot2绘图,也可以直接在映射x轴时用
reorder(species_name, -gene_density)一步完成排序,写法更简洁
内容的提问来源于stack exchange,提问作者angel_30
相关产品推荐
相关产品推荐

