matplotlib
本文最后更新于:2024年5月25日 晚上
matplotlib
Matplotlib 首次发布于2007 年,因其在函数设计方面参考了Matlab,所以其名字以“Mat”开 头,中间的“plot”表示绘图的作用,结尾的“lib”表明它是一个集合。近年来,Matplotlib 库是Python 中绘制二维、三维图表的数据可视化工具,在科学计算领域被得到了广泛应用,具有以下突出优点: 使用简单绘图语言实现复杂绘图;以交互式操作实现数据可视化;采用嵌入式Latex 输出图表、表达式以及文本;实现对图像元素的精细化控制;可输png、eps 等多种格式;
pyplot 基础语法
pyplot 是 matplotlib 的内部模块,包含各种命令风格函数,它提供了操作 matplotlib 库的经典python 编程接口,具有单独的命名空间。本实验选择使用pyplot 模块作为主要工具进行图形绘制,学习使用pyplot 绘制各类图表的基础语法是图像绘制的前提。大部分pyplot 图形绘制都遵循一个固定的流程模式,通过这个流程就可以完成基础图表的绘制。pyplot 基本绘图流程如图所示:
上述流程图第一部分主要作用是创建一个空白画布,并可以选择是否将空白画布划分为多个部分,以便在同一幅图上绘制多个子图。若只需要绘制一个简单的图形,便不需考虑这一部分的内容。
创建画布
在实际绘图过程中,创建画布以及选中子图的函数如图 所示:
其中添加标题、添加x/y 坐标轴以及绘制图形不分先后顺序。可以先绘制图形,也可以先添加各类标签。
绘制图形以及添加各类标签
常用函数:
保存以及显示图形
常用函数:
根据上述示意流程图参考以及不同模块绘图语言相互配合调用,可进行图形简易绘制。
这只是一些Matplotlib.pyplot功能的基础示例。Matplotlib.pyplot提供了许多其他函数和选项,可用于自定义图表的外观、样式、标签等。参考Matplotlib的官方文档以获取更多详细信息和示例:Matplotlib文档
示例
1.散点图
代码实现:
1 |
|
代码逻辑:
1.使用numpy
的linspace
函数生成一个从0.05到10的等差数列,包含100个元素。这个数列将用作散点图中的x坐标。
2.使用numpy
的random.rand
函数生成一个包含100个元素的随机数数组,这些数将用作散点图中的y坐标。
3.调用plt.scatter
函数绘制散点图,传入x和y坐标数组,并设置标签为scatter figure
。
4.调用plt.title
函数为图表添加标题scatter figure
。
5.使用plt.xlim
和plt.ylim
函数设置x轴和y轴的显示范围。x轴的范围是0.05到10,y轴的范围是0到1。
6.调用plt.show
函数显示绘制的散点图。
结果:
2.折线图
代码实现:
1 |
|
代码逻辑:
1.使用numpy
的linspace
函数生成一个从0.0到10的等差数列,包含40个元素。这个数列将用作线图中的x坐标。
2.使用numpy
的random.randn
函数生成一个包含40个元素的随机数数组,这些数将用作线图中的y坐标。random.randn
生成的是标准正态分布的随机数。
3.调用plt.plot
函数绘制线图,传入x和y坐标数组,并设置以下参数:ls
=’-‘:线条样式为实线。lw
=2:线条宽度为2。marker
=’o’:标记样式为圆形。ms
=10:标记大小为10。mfc
=’red’:标记填充颜色为红色。alpha
=0.5:透明度为0.5。
4.最后,调用plt.show
函数显示绘制的线图。
结果:
3.平面函数
代码实现:
1 |
|
代码逻辑:
1.使用numpy
的arange
函数生成一个从0到2.1的等差数列,包含21个元素,步长为0.1。这个数列将用作图表中的x坐标。
2.计算四个幂函数的y值:
3.调用plt.plot
函数绘制四个曲线:第一个参数是x坐标数组,第二个参数是y坐标数组,这里绘制的是y1。第三个参数是线条样式,这里设置为实线。第四个参数是线条宽度,这里设置为3。第五个参数是图例标签,这里使用了LaTeX
数学表达式。
4.调用plt.legend
函数添加图例,设置以下参数:title="Power function"
:图例的标题。loc="upper left"
:图例的位置,位于图表的左上角。bbox_to_anchor=(0.05,0.95)
:设置图例的锚点位置,即图例相对于图表的位置。shadow=True
:显示图例的阴影。fancybox=True
:使用更美观的图例框。
结果:
4.气泡图
代码实现:
1 |
|
代码逻辑:
1.使用numpy
的random.randn
函数生成两个包含100个元素的随机数数组,分别作为散点图中的x和y坐标。
2.使用numpy
的power
函数计算一个包含100个元素的数组,这些数是5x + 10y的平方。这个数组将用作散点图中每个点的面积(大小)。
3.使用numpy
的random.rand
函数生成一个包含100个元素的随机数数组,作为散点图中每个点的颜色。
4.调用matplotlib.cm.RdYlBu
获取一个颜色映射对象,该对象定义了颜色空间的转换。
5.调用plt.scatter
函数绘制散点图,传入x和y坐标数组,以及大小和颜色数组,并设置参数:s=s
:设置每个点的面积(大小)。c=c
:设置每个点的颜色。cmap=cm
:设置颜色映射对象,用于根据点的颜色数组生成实际的RGB颜色。marker='o'
:设置标记样式为圆形。
6.最后,调用plt.show
函数显示绘制的散点图。
结果:
5.三维曲线
代码实现:
1 |
|
代码逻辑:
1.设置matplotlib
的legend.fontsize
为10,以调整图例的字体大小。
2.创建一个新的图表fig
。
3.使用fig.add_subplot
函数添加一个Axes3D
对象,并设置projection='3d'
参数以创建一个三维坐标轴。
4.使用np.linspace
函数生成一个从-4π到4π的等差数列,包含100个元素,作为角度theta
的值。
5.使用np.linspace
函数生成一个从-2到2的等差数列,包含100个元素,作为z轴的值。
6.计算r轴的值,它是z轴值的平方加上1。计算x轴和y轴的值,它们分别是r轴值的sin和cos。
7.调用ax.plot
函数绘制三维曲线,传入x、y、z坐标数组,并设置标签为’3D curve’
。
8.调用ax.legend
函数添加图例,并设置字体大小为10。
9.最后,调用plt.show
函数显示绘制的图表。
结果:
6.3D函数
代码实现:
1 |
|
代码逻辑:
1.创建图形和3D轴:这里的fig
是一个图形对象,ax
是一个3D轴对象,用于后续的绘图。
2.定义x和y的数据:np.linspace
生成了x和y的数据点,范围从-5到5,共100个点。np.meshgrid
则将这些数据点转换成网格形式,以便用于计算z的值。
3.计算z的值:这里的z是根据函数z = x^2 + y^2计算得到的,它将形成一个圆形的碗状曲面。
4.绘制曲面图:plot_surface
函数使用x, y, z的数据来绘制一个曲面图,cmap
参数指定了颜色映射。
5.设置标题和标签:这些函数为图形添加了标题和轴标签,以便于理解。
6.最后,plt.show()
被调用来显示图形。
整个代码的逻辑是将数学函数z = x^2 + y^2转换为3D图形,以便直观地展示函数的曲面形状。通过调整x和y的值以及函数表达式,可以探索不同的数学曲面。
结果:
MORE
这只是一些Matplotlib的基础示例。Matplotlib提供了许多其他图表和示例,可以下载源码自行修改,用于自定义图表的外观、样式、标签等。参考Matplotlib的官方示例:Matplotlib示例