上海阿趣生物科技有限公司

13

手机商铺

qrcode
商家活跃:
产品热度:
  • NaN
  • 0.20000000000000018
  • 1.2000000000000002
  • 0.20000000000000018
  • 3.2
氨基酸代谢组学案例分析
¥600 - 800

上海阿趣生物科技有限公司

入驻年限:13

  • 联系人:

    官方电话

  • 所在地区:

    上海

  • 业务范围:

    技术服务、耗材、实验室仪器 / 设备

  • 经营模式:

    代理商 生产厂商

在线沟通

公司新闻/正文

干货分享 | matplotlib数据可视化介绍与其在代谢组学分析中的应用

684 人阅读发布时间:2022-07-01 15:55

图表是数据探索的过程,它能让我们更直观的理解我们的数据。例如,在代谢组学分析中,PCA散点图可以通过散点的分布情况直观地展示样本间代谢水平的差异;相关性热图可以直观的展示差异物质间的关系。绘制图表是任何数据科学报告的重要组成部分。


matplotlib库是python中常用的绘制二维、三维图表的数据可视化工具。其主要特点如下:

  • 以交互式操作实现渐趋精细的绘图效果
  • 使用简单的绘图语句实现复杂的绘图效果
  • 使用嵌入式的LaTeX输出具有印刷级别的图表、科学表达式和符号文本
  • 对图表的组成元素实现精细化控制

接下来,我们将从常用函数的角度来介绍matplotlib的用法。

一、matplotlib图形组成元素

在matplotlib的一个图形输出窗口中,底层是一个Figure实例,通常称之为画布,包含一些可见和不可见的元素。在画布上,自然就是图形,这些图形就是Axes实例,Axes实例几乎包含了我们要介绍的matplotlib常见组成元素,如坐标轴、刻度、标题、线和标签等。Axes实例有x轴和y轴属性,也就是可以使用Axes.xaxis和Axes.yaxis来控制x轴和y轴相关组成元素,例如刻度线、刻度标签等。

这么多组成元素该如何操作呢?很幸运,matplotlib为我们准备API,通过调用API中的函数,便可以快速了解如何绘制这些组成元素了。接下来,我们就用下图来初识绘制matplotlib的图形组成元素的主要函数。

新闻图片1

接下来,我们将介绍上图中这些函数的函数功能、调用方法、参数说明和调用展示,以了解API函数的使用方法和技术细节。

二、matplotlib图形组成元素的主要函数介绍

1、plot()函数

函数功能:用于绘制线图,展示变量变化趋势

函数调用方法:

plt.plot(x,y,ls="-",lw=3,label="plot figure")

参数说明:

  • x、y:x、y分别为x轴和y轴上的数值
  • ls:线图的线条风格
  • lw:线条的宽度
  • label:图形内容的标签文本
  • color:线条颜色

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0.0, 4*np.pi, 1200)
y=np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.show()
plt.close()

运行结果如下图所示

新闻图片2

2、xlim()函数

函数功能:设置x轴的数值显示范围

函数调用方法:plt.xlim(xmin, xmax)

参数说明:

  • xmin:x轴上刻度最小值
  • xmax:x轴上刻度最大值
  • 平移性:上面的函数功能,调用方法和参数说明可以平移到函数ylim()上

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0.0, 4*np.pi, 1200)
y=np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="cos(x)plot",color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(0, 1)
plt.show()
plt.close()

运行结果如下图所示

新闻图片3

3、xlabel()函数

函数功能:设置x轴标签文本

函数调用方法:plt.xlabel(string, color)

参数说明:

  • string:标签文本内容
  • color: 标签文本颜色
  • 平移性:上面的函数功能,调用方法和参数说明同样可以平移到函数ylabel上

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0.0, 4*np.pi, 1200)
y=np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis",color="g") plt.show()plt.close()

运行结果如下图所示

新闻图片4

4、grid()函数

函数功能:绘制刻度线的网格线

函数调用方法:

plt.grid(linestyle=":", color="grey")

参数说明:

  • linestyle:网格线的线条样式
  • color:网格线的线条颜色

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0.0, 4*np.pi, 1200)
y=np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis", color="g")
plt.grid(linestyle=":", color="grey")
plt.show()
plt.close()

运行结果如下图所示

新闻图片5

5、axhline()函数

函数功能:绘制平行于x轴的水平参考线

函数调用方法:

plt.axhline(y=0.0, color="r", ls="--", lw=2)

参数说明:

  • y:水平参考线的出发点
  • color:参考线的线条颜色
  • ls:参考线的线条风格
  • lw:参考线的线条宽度
  • 平移性:上面的函数功能,调用方法和参数说明同样可以平移到函数axvline()上

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0.0, 4*np.pi, 1200)
y=np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis", color="g")
plt.grid(linestyle=":", color="grey")
plt.axhline(y=0.0,color="r",ls="--", lw=1)
plt.axvline(x=5.0,color="r",ls="--", lw=1)
plt.show()
plt.close()

运行结果如下图所示

新闻图片6

6、axvspan()函数

函数功能:绘制垂直于x轴的参考区域函数调用方法:

plt.axvspan(xmin=1.0,xmax=3.0,facecolor="g",alpha=0.2)参数说明:

  • xmin:参考区域的x轴起始坐标
  • xmax:参考区域的x轴终止坐标
  • facecolor:参考区域的填充颜色
  • alpha:参考区域填充颜色的透明度
  • 平移性:上面的函数功能、调用方法和参数说明同样可以平移到函数axhspan()函数上

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0.0, 4*np.pi, 1200)
y=np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis", color="g")
plt.grid(linestyle=":", color="grey")
plt.axhline(y=0.0,color="r",ls="--",lw=1)
plt.axvline(x=5.0,color="r",ls="--",lw=1)
plt.axvspan(xmin=2,xmax=4,facecolor="g", alpha=0.3)
plt.axhspan(ymin=-0.25,ymax=0.25, facecolor="g", alpha=0.3)
plt.show()
plt.close()

运行结果如下图所示

新闻图片7

7、title()函数

函数功能:添加图形内容的标题

函数调用方法:plt.title(string, color="m")

参数说明:

  • string:图形内容的标题文本
  • colo:标题文本颜色

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0.0, 4*np.pi,1200)
y=np.cos(x)
plt.plot(x,y,ls="-",lw=2,label="cos(x)plot",color="k")
plt.legend()
plt.xlim(-0.5,10)
plt.ylim(-1,1)
plt.xlabel("x-axis",color="g")
plt.ylabel("y-axis",color="g")
plt.grid(linestyle=":",color="grey")
plt.axhline(y=0.0,color="r",ls="--",lw=1)
plt.axvline(x=5.0,color="r",ls="--",lw=1)
plt.axvspan(xmin=2,xmax=4,facecolor="g",alpha=0.3)
plt.axhspan(ymin=-0.25,ymax=0.25,facecolor="g",alpha=0.3)
plt.title("y=sin(x)",color="m")
plt.show()
plt.close()

运行结果如下图所示

新闻图片8

8、annotate()函数

函数功能:添加图形内容细节的注释文本

函数调用方法:

plt.annotate(string,xy=(0,1),xytext=(0+0.15,1.5),weight="bold",color="b",arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))

参数说明:

  • string:图形内容的注释文本
  • xy:被注释图形内容的位置坐标
  • xytext:注释文本的位置坐标
  • weight:注释文本的字体粗细风格
  • color:注释文本的字体颜色
  • arrowprops:指示注释内容的箭头属性字典

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.0, 4*np.pi, 1200)
y = np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis", color="g")
plt.grid(linestyle=":", color="grey")
plt.axhline(y=0.0, color="r", ls="--", lw=1)
plt.axvline(x=5.0, color="r", ls="--", lw=1)
plt.axvspan(xmin=2, xmax=4, facecolor="g", alpha=0.3)
plt.axhspan(ymin=-0.25, ymax=0.25, facecolor="g", alpha=0.3)
plt.title("y=sin(x)", color="m")
plt.annotate("maxinum", xy=(0, 1), xytext=(0+1, 0.8),
             weight="bold", color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.show()
plt.close()

运行结果如下图所示

新闻图片9

9、text()函数

函数功能:添加图形内容细节的无指向型注释文本

函数调用方法:

plt.text(x,y,string,weight="bold",color="y")

参数说明:

  • x、y:x、y分别为注释文本内容所在位置的横纵坐标
  • string:注释文本内容
  • weight:注释文本内容的字体粗细
  • color:注释文本内容的字体颜色

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.0, 4*np.pi, 1200)
y = np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis", color="g")
plt.grid(linestyle=":", color="grey")
plt.axhline(y=0.0, color="r", ls="--", lw=1)
plt.axvline(x=5.0, color="r", ls="--", lw=1)
plt.axvspan(xmin=2, xmax=4, facecolor="g", alpha=0.3)
plt.axhspan(ymin=-0.25, ymax=0.25, facecolor="g", alpha=0.3)
plt.title("y=sin(x)", color="m")
plt.annotate("maxinum", xy=(0, 1), xytext=(0+1, 0.8),
             weight="bold", color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.text(x=5+0.1, y=np.cos(5), s="y=sin(x)", weight="bold", color="orange")
plt.show()
plt.close()


运行结果如下图所示

新闻图片10

10、legend()函数

函数功能:标示文本标签图例

函数调用方法:plt.legend(loc="upper right")

参数说明:

  • loc:图例在图形中的位置

函数调用展示:

  • 代码实现
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.0, 4*np.pi, 1200)
y = np.cos(x)
plt.plot(x, y, ls="-", lw=2, label="cos(x) plot", color="k")
plt.legend()
plt.xlim(-0.5, 10)
plt.ylim(-1, 1)
plt.xlabel("x-axis", color="g")
plt.ylabel("y-axis", color="g")
plt.grid(linestyle=":", color="grey")
plt.axhline(y=0.0, color="r", ls="--", lw=1)
plt.axvline(x=5.0, color="r", ls="--", lw=1)
plt.axvspan(xmin=2, xmax=4, facecolor="g", alpha=0.3)
plt.axhspan(ymin=-0.25, ymax=0.25, facecolor="g", alpha=0.3)
plt.title("y=cos(x)", color="m")
plt.annotate("maxinum", xy=(0, 1), xytext=(0+1, 0.8),
             weight="bold", color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))
plt.text(x=5+0.1, y=np.cos(5), s="y=cos(x)", weight="bold", color="orange")
plt.legend(loc="lower left")
plt.show()
plt.close()


运行结果如下图所示

新闻图片11

三、利用matplotlib进行代谢组学分析

1、PCA散点图绘制

分析功能:在代谢组学分析中,利用PCA散点图可以直观地展示不同样本的整体代谢水平差异程度。

调用函数方法:plt.scatter(x, y, color, alpha, lw, label)

参数说明:

  • x、y:散点的x、y轴坐标
  • color:散点颜色
  • alpha:散点透明度
  • label:散点对应组名标签

函数调用展示:

  • 代码实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import *
X_score = [[-3.21199455, 2.88979616],
     [-2.26432734, -2.31117014],
     [-2.40467366, 0.34498281],
     [-2.7862174, -1.3370816 ],
     [ 2.61203387, 0.2885495 ],
     [ 2.50901927, -0.19301178],
     [ 2.79200178, 0.20771416],
     [ 2.75415805, 0.11022088]]
X_score = np.array(X_score)
target_names = ["A", "B"]
colors = ["navy", "turquoise"]
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])
n = X_score.shape[0]
hfn = 2*(n-1)*(n**2-1)/(n**2*(n-2))*f.ppf(0.95, 2, n-2)
rv = np.linspace(0, 2*np.pi, 100)
x1 = np.sqrt(np.var(X_score[:, 0], ddof=1)*hfn)*np.cos(rv)
y1 = np.sqrt(np.var(X_score[:, 1], ddof=1)*hfn)*np.sin(rv)
df_score = pd.DataFrame([x1, y1]).T
pc1_ratio = round(65.401, 1)
pc2_ratio = round(18.042, 1)
plt.figure()
for color, i, target_name in zip(colors, [0, 1], target_names):
    plt.scatter(X_score[y == i, 0], X_score[y == i, 1], color=color, alpha=.8, label=target_name)
plt.plot(x1, y1, c="k")
plt.axhline(y= 0, color="grey")
plt.axvline(x= 0, color="grey")#linestyle="--"
plt.xlabel('PC1[' + str(pc1_ratio) + "%]")
plt.ylabel('PC2[' + str(pc2_ratio) + "%]")
plt.legend(loc="best", shadow=False, scatterpoints=1)
plt.close()

运行结果如下图所示

新闻图片12

2、分类饼图绘制

分析功能:在代谢组学分析中,饼图可以直观地展示样本中检测出的各类代谢物所占的比例

调用函数方法:plt.pie(x,startangle,autopct, wedgeprops, textprops)

参数说明:

  • x:数据不同类别的百分比
  • startangle:绘制饼图起始角度
  • autopct:默认百分比文本保留小数位数
  • wedgeprops:各类别块轮廓线控制参数
  • textprops:图形内容文本字体大小、颜色参数

函数调用展示:

  • 代码实现
def pie_plot(self):
    data = self.kegg_pathway_mapping_list[2]
    data["Super.Class"][data["Super.Class"].isna()] = "Others"
    group_count = data["Super.Class"].value_counts()
    group_per = np.round(group_count / np.sum(group_count), 5)
    group_per = pd.DataFrame(group_per)
    labels = group_per.index
    plt.axes(aspect="equal")
    wedges, texts, autotexts= plt.pie(x=group_per["Super.Class"], startangle=0, autopct="%.3f%%", 
                             wedgeprops={"linewidth":0.5, "edgecolor":"green"},
                                          textprops= {'fontsize':6, 'color':'black'}) 
    plt.legend(wedges, labels, title="Super Class", loc="center left", bbox_to_anchor=(1, 0, 0.3, 1))
    plt.setp(autotexts, size=8, weight="bold") #跟图中文字添加格式
    plt.tight_layout()
    plt.show()
    plt.close()

运行结果如下如所示

新闻图片13

3、其他代谢组学分析图展示

代谢组学分析中几乎所有的图都可以利用matplotlib库绘制实现,除了上面展示的PCA散点图、分类饼图外,其他常见的如相关性热力图、雷达图(如下图所示),都可以利用matplotlib绘制出相应的图形。

新闻图片14 新闻图片15

参考资料:

https://matplotlib.org/

《python数据可视化之matplotlib数据实践》

上一篇

代谢组学原始数据如何上传?看这条就够了!

下一篇

修饰专栏 | 揭开乙酰化修饰的神秘面纱

更多资讯

我的询价