需求:对kraken2比对报告进行统计后,取top10结果,然后绘制物种分类的百分比堆积柱状图

输入文件:

species1 species2 speciesn
sample1 1 2 5
sample2 2 3 6
sample3 3 4 7

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

table= pd.read_table("XXX.xls",sep="\t",index_col=0)   #读取文件,并将第一列设为index
table2=table.sum(axis=1,skipna = True)        #dataframe 每行求和
df=table.div(table2,axis='rows')                     #计算占比并存为新的dataframe

category_names =df.columns.values.tolist()        #提取列名 存为list

results= df.T.to_dict('list')                                 #行名为key  值为value 存为dic

labels = list(results.keys())                      #确定x轴
data = np.array(list(results.values()))      #确定数据
data_cum = data.cumsum(axis=1)         #确定柱子起始位置

category_colors = plt.get_cmap('hsv')(np.linspace(0,1, data.shape[1]))   #提取颜色   'hsv' 该值需根据实际情况选择

fig, ax = plt.subplots(figsize=(40, 30))    #绘图
plt.xticks(fontsize=12)                            #x轴坐标刻度字体大小
plt.yticks(fontsize=15)                             #y轴坐标刻度字体大小
ax.set_ylim(0, np.sum(data, axis=1).max())   #设置y轴范围
x_num=np.arange(len(category_names))
ax.set_xlim(min(x_num)-1,max(x_num)+1)    #设置x轴范围

for i, (colname, color) in enumerate(zip(category_names, category_colors)):
    heights = data[:, i]
    starts = (data_cum[:, i] - heights)
    ax.bar(labels, heights, bottom=starts, width=0.5,label=colname, color=color)

ax.legend(loc='right')         #legend  位置
    
plt.show()

结果示例:

Python学习记录—— 绘制百分比堆积柱状图相关推荐

  1. 数据可视化--绘制百分比堆积柱状图、簇形柱状图、并列子图

    一.绘制簇形柱状图 '''列索引"month"会被自动设置为x轴的标题.用于指定y轴的列索引们会自动生成对应的图例,以及x轴刻度会自动旋转90度'''data.plot.bar(& ...

  2. #18 可视化基础4-簇形柱状图、百分比堆积柱状图、并列子图

    目录 簇形柱状图 「不指定x轴和y轴数据」 plot.bar() 「不指定x轴和y轴数据」 plot.bar("指定为x轴的columns",["指定为y轴的column ...

  3. Python绘制单数据系列柱状图、多数据系列柱状图、堆积柱状图、百分比堆积柱状图

    1.单数据系列柱状图: 运行结果:  具体代码: #引入工具包 import matplotlib.pyplot as plt import numpy as np#设置中文字体,如果不需要中文,则可 ...

  4. python bar图 百分比_matplotlib bar()实现百分比堆积柱状图

    使用matplotlib创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比. 未使用numpy版本 适用于少 ...

  5. Python使用matplotlib绘制分组对比柱状图(bar plot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案

    Python使用matplotlib绘制分组对比柱状图可视化时(bar plot)汉语(中文)标签显示成了框框□□.什么情况.我们有解决方案 目录

  6. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  7. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  8. Python学习记录——英文名修改成标准格式

    Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...

  9. python学习记录——容器篇

    容器 字符串 下标(索引) # 下表也称为是索引,是一个整型数字,可以是正数,也可以是负数 # 正数下标是从0开始的,表示第一个字符,-1表示最后一个字符 my_str = 'hello'h e l ...

  10. Python学习记录day6-反射、常用模块

    Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...

最新文章

  1. [js对象]JS入门之Global对象
  2. Kubernetes基础学习(一)
  3. 一个基于SAP Hybris Commerce和微信的社交电商原型介绍
  4. php中什么时候用传值,php中传值与传引用的区别。什么时候传值什么时候传引用?...
  5. 目标检测排行榜_3D领域重大突破!大华股份人工智能取得KITTI Object 3D车辆检测排行榜第一名...
  6. [CB]加快BCB编译速度
  7. 深入解析Linux并发同步
  8. Direct2D 如何关闭抗锯齿
  9. 我的.NET开发环境设置
  10. pythonexecquery_python 进程信息
  11. linux 重建文件系统命令,fsck命令 – 检查并修复Linux文件系统
  12. SharePoint 2013 入门教程--系列文章
  13. 算法导论 思考题4-1
  14. Fiddler内置命令
  15. 蓝鲸ERP标准版-进销存-采购管理子系统操作说明1
  16. his系统计算机软件,医学系统(一)医院常用的软件系统:PACS系统、HIS系统、RIS系统、LIS系统、CIS系统...
  17. 迷你上标和下标复制大全(含0~9、字母、特殊字符)
  18. 逻辑推理的分类:演绎推理(详解)、归纳推理、类比推理
  19. 江城武汉,一座离开后会怀念的城市
  20. word图文混排复制到JMEditor图片不显示

热门文章

  1. linux ps 主进程,Linux ps 查看进程
  2. dnf服务器未响应怎么解决方法,DNF地下城与勇士程序未响应怎么办——一招搞定...
  3. webpack 代码压缩优化篇
  4. 最小二乘法拟合空间直线的原理及实现
  5. Python实现isPrime函数----新手
  6. B站粉丝计数器 | ESP32轻松学(Arduino版)
  7. win10u盘被写保护怎么解除_win10系统U盘被写保护解除的操作方法
  8. 杀戮间Cache文件夹整理
  9. matlab双峰滤波,MATLAB中的单峰或双峰分布
  10. 浏览器下载文件的两种方式