谷歌认证合作伙伴网站建设,医疗器械产品设计公司,wordpress文章页添加字段,rust做网站一、认识matplotlib
Matplotlib是一个Python 2D绘图库#xff0c;能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形#xff0c;用来绘制各种静态#xff0c;动态#xff0c;交互式的图表。
Matplotlib可用于Python脚本#xff0c;Python和IPython Shell、…一、认识matplotlib
Matplotlib是一个Python 2D绘图库能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形用来绘制各种静态动态交互式的图表。
Matplotlib可用于Python脚本Python和IPython Shell、Jupyter notebookWeb应用程序服务器和各种图形用户界面工具包等。
Matplotlib是Python数据可视化库中的泰斗它已经成为python中公认的数据可视化工具我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。
为了对matplotlib有更好的理解让我们从一些最基本的概念开始认识它再逐渐过渡到一些高级技巧中。
二、一个最简单的绘图例子
Matplotlib的图像是画在figure如windowsjupyter窗体上的每一个figure又包含了一个或多个axes一个可以指定坐标系的子区域。最简单的创建figure以及axes的方式是通过pyplot.subplots命令创建axes以后可以使用Axes.plot绘制最简易的折线图。
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as npfig, ax plt.subplots() # 创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]); # 绘制图像Trick 在jupyter notebook中使用matplotlib时会发现代码运行后自动打印出类似matplotlib.lines.Line2D at 0x23155916dc0这样一段话这是因为matplotlib的绘图代码默认打印出最后一个对象。如果不想显示这句话有以下三种方法在本章节的代码示例中你能找到这三种方法的使用。
在代码块最后加一个分号;在代码块最后加一句plt.show()在绘图时将绘图对象显式赋值给一个变量如将plt.plot([1, 2, 3, 4]) 改成line plt.plot([1, 2, 3, 4])
和MATLAB命令类似你还可以通过一种更简单的方式绘制图像matplotlib.pyplot方法能够直接在当前axes上绘制图像如果用户未指定axesmatplotlib会帮你自动创建一个。所以上面的例子也可以简化为以下这一行代码。
line plt.plot([1, 2, 3, 4], [1, 4, 2, 3]) 三、Figure的组成
现在我们来深入看一下figure的组成。通过一张figure解剖图我们可以看到一个完整的matplotlib图像通常会包括以下四个层级这些层级也被称为容器container下一节会详细介绍。在matplotlib的世界中我们将通过各种命令方法来操纵图像中的每一个部分从而达到数据可视化的最终效果一副完整的图像实际上是各类子元素的集合。 Figure顶层级用来容纳所有绘图元素 Axesmatplotlib宇宙的核心容纳了大量元素用来构造一幅幅子图一个figure可以由一个或多个子图组成 Axisaxes的下属层级用于处理所有和坐标轴网格有关的元素 Tickaxis的下属层级用来处理所有和刻度有关的元素
四、两种绘图接口
matplotlib提供了两种最常用的绘图接口
显式创建figure和axes在上面调用绘图方法也被称为OO模式object-oriented style)依赖pyplot自动创建figure和axes并绘图 使用第一种绘图接口是这样的
x np.linspace(0, 2, 100)fig, ax plt.subplots()
ax.plot(x, x, labellinear)
ax.plot(x, x**2, labelquadratic)
ax.plot(x, x**3, labelcubic)
ax.set_xlabel(x label)
ax.set_ylabel(y label)
ax.set_title(Simple Plot)
ax.legend()
plt.show()而如果采用第二种绘图接口绘制同样的图代码是这样的
x np.linspace(0, 2, 100)plt.plot(x, x, labellinear)
plt.plot(x, x**2, labelquadratic)
plt.plot(x, x**3, labelcubic)
plt.xlabel(x label)
plt.ylabel(y label)
plt.title(Simple Plot)
plt.legend()
plt.show()五、通用绘图模板
由于matplotlib的知识点非常繁杂在实际使用过程中也不可能将全部API都记住很多时候都是边用边查。因此这里提供一个通用的绘图基础模板任何复杂的图表几乎都可以基于这个模板骨架填充内容而成。初学者刚开始学习时只需要牢记这一模板就足以应对大部分简单图表的绘制在学习过程中可以将这个模板模块化了解每个模块在做什么在绘制复杂图表时如何修改填充对应的模块。
# step1 准备数据
x np.linspace(0, 2, 100)
y x**2# step2 设置绘图样式这一模块的扩展参考第五章进一步学习这一步不是必须的样式也可以在绘制图像是进行设置
mpl.rc(lines, linewidth4, linestyle-.)# step3 定义布局 这一模块的扩展参考第三章进一步学习
fig, ax plt.subplots() # step4 绘制图像 这一模块的扩展参考第二章进一步学习
ax.plot(x, y, labellinear) # step5 添加标签文字和图例这一模块的扩展参考第四章进一步学习
ax.set_xlabel(x label)
ax.set_ylabel(y label)
ax.set_title(Simple Plot)
ax.legend() ;