本文共 3395 字,大约阅读时间需要 11 分钟。
Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。
为了对matplotlib有更好的理解,让我们从一些最基本的概念开始认识它,再逐渐过渡到一些高级技巧中。
#一个简单小例子import matplotlib.pyplot as pltfig, ax = plt.subplots() # 创建一个包含一个axes的figureax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 绘制图像和MATLAB命令类似,你还可以通过一种更简单的方式绘制图像,matplotlib.pyplot方法能够直接在当前axes上绘制图像,如果用户未指定axes,matplotlib会帮你自动创建一个。所以上面的例子也可以简化为以下这一行代码。
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
现在我们来深入看一下figure的组成。通过一张figure解剖图,我们可以看到一个完整的matplotlib图像通常会包括以下四个层级,这些层级也被称为容器(container),下一节会详细介绍。在matplotlib的世界中,我们将通过各种命令方法来操纵图像中的每一个部分,从而达到数据可视化的最终效果,一副完整的图像实际上是各类子元素的集合。
Figure:顶层级,用来容纳所有绘图元素
Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成 Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素 Tick:axis的下属层级,用来处理所有和刻度有关的元素matplotlib的标准使用流程为:
创建一个Figure实例 使用Figure实例创建一个或者多个Axes或Subplot实例 使用Axes实例的辅助方法来创建primitive 值得一提的是,Axes是一种容器,它可能是matplotlib API中最重要的类,并且我们大多数时间都花在和它打交道上。#流程实例import matplotlib.pyplot as pltimport numpy as np# step 1 # 我们用 matplotlib.pyplot.figure() 创建了一个Figure实例fig = plt.figure()# step 2# 然后用Figure实例创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplotax = fig.add_subplot(2, 1, 1) # two rows, one column, first plot# step 3# 然后用Axes实例的方法画了一条曲线t = np.arange(0.0, 1.0, 0.01)s = np.sin(2*np.pi*t)line, = ax.plot(t, s, color='blue', lw=2)
在matplotlib中曲线的绘制,主要是通过类 matplotlib.lines.Line2D 来完成的。
它的基类: matplotlib.artist.Artist matplotlib中线-line的含义:它表示的可以是连接所有顶点的实线样式,也可以是每个顶点的标记。此外,这条线也会受到绘画风格的影响,比如,我们可以创建虚线种类的线。#构造函数class matplotlib.lines.Line2D(xdata, ydata, linewidth=None, linestyle=None, color=None, marker=None, markersize=None, markeredgewidth=None, markeredgecolor=None, markerfacecolor=None, markerfacecoloralt='none', fillstyle=None, antialiased=None, dash_capstyle=None, solid_capstyle=None, dash_joinstyle=None, solid_joinstyle=None, pickradius=5, drawstyle=None, markevery=None, **kwargs)
其中常用的的参数有:
xdata:需要绘制的line中点的在x轴上的取值,若忽略,则默认为range(1,len(ydata)+1)
ydata:需要绘制的line中点的在y轴上的取值 linewidth:线条的宽度 linestyle:线型 color:线条的颜色 marker:点的标记 markersize:标记的size 其他详细参数可参考Line2D官方文档https://matplotlib.org/stable/api/_as_gen/matplotlib.lines.Line2D.html绘制直线line 常用的方法有两种:
pyplot方法绘制 Line2D对象绘制#pyplot方法绘制import matplotlib.pyplot as pltx = range(0,5)y = [2,5,7,8,10]plt.plot(x,y)
#Line2D对象绘制import matplotlib.pyplot as pltfrom matplotlib.lines import Line2D fig = plt.figure()ax = fig.add_subplot(111)line = Line2D(x, y)ax.add_line(line)ax.set_xlim(min(x), max(x))ax.set_ylim(min(y), max(y))plt.show()
pyplot里有个专门绘制误差线的功能,通过errorbar类实现,它的构造函数:
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
其中最主要的参数是前几个:
x:需要绘制的line中点的在x轴上的取值
y:需要绘制的line中点的在y轴上的取值 yerr:指定y轴水平的误差 xerr:指定x轴水平的误差 fmt:指定折线图中某个点的颜色,形状,线条风格,例如‘co–’ ecolor:指定error bar的颜色 elinewidth:指定error bar的线条宽度import numpy as npimport matplotlib.pyplot as pltfig = plt.figure()x = np.arange(10)y = 2.5 * np.sin(x / 20 * np.pi)yerr = np.linspace(0.05, 0.2, 10)plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)')
转载地址:http://dqoxi.baihongyu.com/