Python学习记录—— 绘制百分比堆积柱状图
需求:对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学习记录—— 绘制百分比堆积柱状图相关推荐
- 数据可视化--绘制百分比堆积柱状图、簇形柱状图、并列子图
一.绘制簇形柱状图 '''列索引"month"会被自动设置为x轴的标题.用于指定y轴的列索引们会自动生成对应的图例,以及x轴刻度会自动旋转90度'''data.plot.bar(& ...
- #18 可视化基础4-簇形柱状图、百分比堆积柱状图、并列子图
目录 簇形柱状图 「不指定x轴和y轴数据」 plot.bar() 「不指定x轴和y轴数据」 plot.bar("指定为x轴的columns",["指定为y轴的column ...
- Python绘制单数据系列柱状图、多数据系列柱状图、堆积柱状图、百分比堆积柱状图
1.单数据系列柱状图: 运行结果: 具体代码: #引入工具包 import matplotlib.pyplot as plt import numpy as np#设置中文字体,如果不需要中文,则可 ...
- python bar图 百分比_matplotlib bar()实现百分比堆积柱状图
使用matplotlib创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比. 未使用numpy版本 适用于少 ...
- Python使用matplotlib绘制分组对比柱状图(bar plot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案
Python使用matplotlib绘制分组对比柱状图可视化时(bar plot)汉语(中文)标签显示成了框框□□.什么情况.我们有解决方案 目录
- Python学习记录day3
2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...
- 【Python学习记录】Numpy广播机制(broadcast)
✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...
- Python学习记录——英文名修改成标准格式
Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...
- python学习记录——容器篇
容器 字符串 下标(索引) # 下表也称为是索引,是一个整型数字,可以是正数,也可以是负数 # 正数下标是从0开始的,表示第一个字符,-1表示最后一个字符 my_str = 'hello'h e l ...
- Python学习记录day6-反射、常用模块
Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...
最新文章
- [js对象]JS入门之Global对象
- Kubernetes基础学习(一)
- 一个基于SAP Hybris Commerce和微信的社交电商原型介绍
- php中什么时候用传值,php中传值与传引用的区别。什么时候传值什么时候传引用?...
- 目标检测排行榜_3D领域重大突破!大华股份人工智能取得KITTI Object 3D车辆检测排行榜第一名...
- [CB]加快BCB编译速度
- 深入解析Linux并发同步
- Direct2D 如何关闭抗锯齿
- 我的.NET开发环境设置
- pythonexecquery_python 进程信息
- linux 重建文件系统命令,fsck命令 – 检查并修复Linux文件系统
- SharePoint 2013 入门教程--系列文章
- 算法导论 思考题4-1
- Fiddler内置命令
- 蓝鲸ERP标准版-进销存-采购管理子系统操作说明1
- his系统计算机软件,医学系统(一)医院常用的软件系统:PACS系统、HIS系统、RIS系统、LIS系统、CIS系统...
- 迷你上标和下标复制大全(含0~9、字母、特殊字符)
- 逻辑推理的分类:演绎推理(详解)、归纳推理、类比推理
- 江城武汉,一座离开后会怀念的城市
- word图文混排复制到JMEditor图片不显示