matplotlib是Python中最常用的绘制图表的工具包,它提供一整套和MATLAB类似的绘图数据集,此外还有许多插件工具集,如绘制3D图形的mplot3,以及用于绘制地图的Catapy等,同时matplotlib还整合了LaTex,支持数学公式表达式。
官网链接:https://matplotlib.org/
绘图简介
Matplotlib的大多数绘图函数都是在matplotlib.pyplot模块中,其通常的引入约定是:import matplotlib.pyplot as plt
🔘利用pyplot模块绘制图表的步骤如下:
- ①创建Figure对象,即绘图窗口。
- ②在绘图窗口创建Axes对象,即绘图区域(一个绘图窗口可以有多个绘图区域)
- ③在绘图区域绘制图表。
- ④显示绘图窗口或直接保存图表
🔘绘图窗口的创建→figure()函数,该函数的关键字参数有:
- num:figure的编号,缺省情况下是从1开始自动递增;
- figsize:为figure的尺寸,用(width,height)表示,缺省值是(8,6),单位英寸;
- dpi:分辨率,缺省值为80;
- facecolor和edgecolor分别为前景色和边缘色,缺省为白色和黑色。
🔘绘图区域的创建:
- 利用Figure对象的add_subplot(nrows, ncols, index, **kwargs)方法(或pyplot模块的subplot函数),其中,nrows和ncols表示把绘图窗口分成nrows x ncols个区域,index为索引号,均用数字表示。
- 利用Figure对象的add_axesadd_axes(rect, projection=None, polar=False, **kwargs)方法(或pyplot模块的axes函数),其中rect参数是由四个值(left、bottom、width、height)组成的列表,所有数量均以图形宽度和高度的分数表示。
此外,为方便操作,如果当前当前窗口中没有Axes对象,pyplot模块将自动产生一个新的Axes对象;如果没有创建绘图窗口,则会自动产生一个缺省的绘图窗口。
plot(x, y)是最常用的绘图函数,用于绘制x和y序列的线图或点图,缺省情况下画的是线,且x可缺省(缺省值为0到n-1的序列)。show()函数将显示绘图窗口,savefig(filename)函数可直接将输出图像保存到指定路径。
示例(产生一个简单的图表显示并保存):
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.show()
plt.savefig("D:/tmp/Figure_1.png")
设置图表属性
1️⃣添加标题和文本
利用pyplot的title(s) 函数可设置图表的标题,s 为标题字符串。
利用pyplot的text(x, y, s) 函数可在坐标为x和y处的位置上增加文本,s为文本字符串。
这里,s也可以是LaTex表达式(即能在图表中插入数学表达式),LaTex表达式位于两个 $ 符合之间。
示例(在图表中添加标题和文本):
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.title("This a matplotlib plot picture")
plt.text(2, 8, "$y=x^2$")
plt.plot(x, y)
plt.show()
2️⃣设置坐标轴属性
利用pyplot的xlabel(s)和ylabel(s) 函数可可分别设置x轴和y轴的标签,s为标签字符串。
利用pyplot的xlim(min_value, max_value)和ylim(min_value, max_value) 函数可设置坐标轴的范围。
利用pyplot的xticks(locs, labels)和yticks(locs, labels)函数可指定刻度线位置及对应的标注。
示例:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.title("This a matplotlib plot picture")
plt.text(2, 8, "$y=x^2$")
plt.xlabel("month")
plt.ylabel("value")
plt.xlim(0, 5)
plt.ylim(0, 20)
plt.xticks([1, 2, 3, 4], ["Jan", "Feb", "Mar", "Apr"])
plt.plot(x, y)
plt.show()
3️⃣增加网格
利用pyplot的grid(b)函数,并设置参数b为True,即在图表上按照刻度线绘制网格。
示例:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.title("This a matplotlib plot picture")
plt.text(2, 8, "$y=x^2$")
plt.xlabel("month")
plt.ylabel("value")
plt.xlim(0, 5)
plt.ylim(0, 20)
plt.xticks([1, 2, 3, 4], ["Jan", "Feb", "Mar", "Apr"])
plt.grid(True) # 增加格网
plt.plot(x, y)
plt.show()
4️⃣定义字体与符号
可通过一些关键字参数来对一些字体和符号进行定义,相关的关键字参数有fontsize、color、marker、markersize、linesize、linestyle、linewidth、bbox等。
pyplot模块内置的颜色及别名:
pyplot模块内置的线和点符号:
示例:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.title("This a matplotlib plot picture")
plt.text(2, 8, "$y=x^2$", fontsize=20, bbox={'facecolor': 'yellow', 'alpha': 0.2})
plt.plot(x, y, color="r")
plt.plot(x, y, ".", color="k")
plt.show()
5️⃣增加图例
可利用pyplot的legend(list, loc) 函数,来添加图例。参数list是一个字符串列表,用来标注图例中的符号,字符串的顺序要和符号绘制顺序对应。list也可缺省(缺省将以label属性值进行标注),参数loc设置位置(0最佳位置,1右上角,2左上角,3右下角,4左下角,5右侧,6左侧垂直居中,7右侧垂直居中,8下方水平居中,9上方水平居中,10正中间)
示例:
import matplotlib.pyplot as plt
y1 = [1, 5, 3, 9]
y2 = [4, 6, 7, 8]
plt.plot(y1, color="r")
plt.plot(y2, color="g")
plt.legend(["line1", "line2"], loc=2)
plt.show()