首页 存档 技术 查看内容

Python | 教你用matplotlib绘制物种组成图

2018-3-30 13:00 |来自: 互联网 1080 0

摘要: 在微生物组信息分析中,样品的物种组成情况可以说是分析得以展开的基石。而到了写论文时,物种组成图又成了必不可少的标配。看到别人家的文章里一张又一张的高颜值图表,谁不想亲手打造一张美图呢?想改哪里改哪里, ...

在微生物组信息分析中,样品的物种组成情况可以说是分析得以展开的基石。而到了写论文时,物种组成图又成了必不可少的标配。看到别人家的文章里一张又一张的高颜值图表,谁不想亲手打造一张美图呢?想改哪里改哪里,想用什么颜色就用什么颜色,只听自己的审美,就是这么freestyle话不多说,小锐这就教大家用Python绘制物种组成图,而且是多样品情况下的柱状图哦~


美美哒图长这个样子


当样品较多时,

柱状图可同时反映多个样品中的物种组成,

视觉效果直观明朗。


先拿一张锐翌出品的物种组成柱状图镇帖!

横坐标为样品名称,纵坐标为物种丰度。

柱状图从种水平展示了各样品Top15的物种组成情况,而Top15以外物种的丰度之和用黑色表示。



安装python和matplotlib包


① 本文选择的计算机语言是python,可以从如下网址中选择与电脑系统相匹配的python版本:https://www.python.org/ftp/python/。

在本文中所讲述的都是基于python3.6.1版本。


② 将安装目录下的bin路径添加到系统的环境变量中。


③ 我们需要安装matplotlib包。进入安装目录下的Scripts文件夹中,按住shift并点击鼠标右键,打开dos窗口,输入pip install matplotlib,系统会自动下载并安装这个包和这个包所有的依赖包。安装成功如下图所示:




开始绘图


这儿和大家分享的图稍微简单些,是5个样本构成的物种组成柱状图,每个样本中有5种物种。配色是同色系的蓝色,大家在操作过程中可以作更多调节。它的特点是,还配有一张表格。这意味着不仅定性地描绘了属水平下各个菌的丰度值,而且还能从表格中定量地获得各个菌的丰度值。


代码如下:

import numpy as np
import matplotlib.pyplot as plt

data = [[ 6.638, 1.742, 7.513, 5.728, 3.215],
[ 5.823, 3.811, 7.845, 9.938, 1.654],
[ 8.913, 8.055, 1.558, 4.981, 6.035],
[ 7.841, 8.185, 1.506, 1.463, 6.538],
[ 9.361, 3.315, 3.434, 7.813, 5.269]]

columns = ('name1', 'name2', 'name3', 'name4', 'name5') # 横坐标数值
rows = ['genus %d' % x for x in (1, 2, 3, 4, 5)] # 表格第一列名称

values = np.arange(0, 40, 10) # 纵坐标数值

# 选取几种颜色

colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))
n_rows = len(data)

index = np.arange(len(columns)) 0.3
bar_width = 0.4

y_offset = np.array([0.0] * len(columns))

# 绘制条形图
cell_text = []
for row in range(n_rows):
plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])
y_offset = y_offset data[row]
cell_text.append(['%1.1f' % (x) for x in y_offset])
# 反转颜色和标签
colors = colors[::-1]
cell_text.reverse()

# 在x轴底部添加一个表

the_table = plt.table(cellText=data,
rowLabels=rows,
rowColours=colors,
colLabels=columns,
loc='bottom')

plt.subplots_adjust(left=0.2, bottom=0.2)

plt.ylabel("Expression/10^-5")
plt.yticks(values, ['%d' % val for val in values])
plt.xticks([])
plt.title('Otu Abundance')

plt.show()


代码在手 还等什么

赶紧实战起来吧

绘制一张你的专属分析图

更多干货 持续分享中

敬请期待

供稿:马圣

编辑:王丽燕


声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部