引言
不管是做实验、科研还是工作,对我们来说,对实验过程以及结果使用图片的形式进行可视化具有重要意义。图片可以将结果直观地呈现给我们,辅助我们分析问题、解决问题。本篇博客简单记录一下自己关于使用Python和Matplotlib绘图的学习心得。Matplotlib是一个强大的绘图工具开源库,它可以绘制各种各样的图形,曲线图、折线图、点状图、雷达图、条形图…而且还有大量的参数设置使得我们可以方便地改变图片的样式,使其更符合要求,更美观。
Matplotlib的规范绘图一般有以下几个步骤:
- 创建画布
- 图片的参数设置
- 选择特定API使用数据绘制所需图形
- 全局设置(坐标轴、标题…)
- 图形显示
绘图步骤
创建画布
想象一下,我们要画一幅画,是不是得先找到一张纸,在Matplotlib中也是一样的,我们得先创建一副画布。Matplotlib有专门创建画布的API。
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
参数含义:
- num:图的唯一标识符。可以选择整型、字符串或者Figure类型。如果具有这个num的图像已经存在,则该图像被激活并返回。整数指的是图,number属性和字符串是指图形标签。如果是没有带有标识符的图形或调用API的时候没有设置num,则创建一个新图形,使其处于激活状态并返回。 如果 num 是一个 int,它将用于 Figure.number 属性,否则,使用自动生成的整数值(从 1 开始并为每个新图形递增)。 如果 num 是字符串,则图形标签和窗口标题设置为此值。
- figsize(float, float):表示创建画布的宽,高(英寸)。默认值:rcParams[“figure.figsize”] (默认值:[6.4, 4.8])。
- dpifloat:以每英寸点数为单位的图形分辨率。默认值:rcParams[“figure.dpi”] (默认值:100.0)。
- facecolorcolor:背景颜色。默认值: rcParams[“figure.facecolor”] (默认值: ‘white’)。
- edgecolorcolor:边缘颜色。默认值: rcParams[“figure.edgecolor”] (默认值: ‘white’)。
- frameon:布尔类型, 默认值: True。如果设置为false, 禁止绘制图框。
Figure:Figure 的子类。可选择自定义自己的Figure实例。
clear:布尔类型,默认值: False。如果设置为True,存在的图像将会被清理。
函数matplotlib.pyplot.figure()返回一个Figure对象,返回的 Figure 实例也将传递给后端的 new_figure_manager,这允许将自定义 Figure 类挂钩到 pyplot 接口。 额外的 kwargs 将被传递给 Figure init 函数。
图片的参数设置
在参数详解里边我们看到了rcParams,这是一个字典类型的数据,里边包含了很多对于绘图的设置。
rcParams里边包含很多参数,比如:
参数 | 功能 |
---|---|
axes.labelsize | x 和 y 标签的字体大小 |
axes.titlesize | 轴标题的字体大小 |
figure.titlesize | 图形标题的大小 |
xtick.labelsize | x轴刻度标签的字体大小 |
ytick.labelsize | y轴刻度标签的字体大小 |
legend.fontsize | 图例的字体大小 |
… | … |
具体我们要如何使用rcParams来设置绘图参数呢?
只需要在画图之前添加以下语句即可,比如我要设置坐标轴的标签和标题大小,就需要进行如下操作,需要设置什么参数,就在parameter里设定即可。
parameters = {'axes.labelsize': 25,
'axes.titlesize': 35}
plt.rcParams.update(parameters)
选择特定API使用数据绘制所需图形
所有地设置都做好之后,就可以画图了。Matplotlib里边有很多画图的API,曲线图、折线图、点状图、雷达图、条形图…我们拿最常见的曲线图为例。
我就画一条特定范围内的cos曲线,先准备数据,x和y
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y1 = np.cos(x)
绘制曲线
plt.plot(x, y1)
先看一下效果
matplotlib.pyplot.plot(x, y, color, linestyle, linewidth, marker...)
这是matplotlib.pyplot绘制曲线图的API,其参数含义如下:
- x, y: x, y轴方向上的数据
- color:曲线的颜色
- linestyle:曲线的样式
- linewidth:曲线宽度
- marker:曲线上每个点的标记
我们根据这些参数改变一下,看绘制出来的曲线
plt.plot(x, y1, color='b', linestyle='--', marker='*')
图形显示
所有的操作完成之后,我们要想让图片显示出来,必须加上==Matplotlib.pyplot.show()==才可以。
完整代码展示
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 10, 100)
y1 = np.cos(x)
plt.figure(figsize=(7, 5), dpi=50.0)
plt.plot(x, y1)
# plt.plot(x, y1, color='b', linestyle='--', marker='*')
plt.show()