开发手册 欢迎您!
软件开发者资料库

Python Matplotlib subplot 子图

Matplotlib,风格类似 Matlab 的基于 Python 的图表绘图系统。 Matplotlib 是 Python 最著名的绘图库,它提供了一整套和 Matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中。本文主要介绍Python Matplotlib subplot 子图。

1、显示多个图

使用subplots()函数,可以在一幅图中绘制多个图:

例如:

绘制2个图:

import matplotlib.pyplot as pltimport numpy as np#plot 1:x = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(1, 2, 1)plt.plot(x,y)#plot 2:x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(1, 2, 2)plt.plot(x,y)plt.show()

 Result:

httpswwwwonherocom

2、subplots() 函数

subplots()函数采用三个参数来描述图形的布局。

布局按行和列组织,由第一个和第二个参数表示。

第三个参数表示当前图的索引。

plt.subplot(1,2,1) #该图有1行2列,该图是第一个图。
plt.subplot(1、2、2) #该图有1行2列,该图是第二个图。

因此,如果我们想要一个2行1列的图形(这意味着这两个图将彼此并排显示而不是并排显示),我们可以编写如下语法:

例如:

相互绘制2个图:

import matplotlib.pyplot as pltimport numpy as np#plot 1:x = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(2, 1, 1)plt.plot(x,y)#plot 2:x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(2, 1, 2)plt.plot(x,y)plt.show()

 Result:

httpswwwwonherocom

可以在一个图形上绘制任意多的图,只需描述图的行数,列数和索引。

例如: 

绘制6个图:

import matplotlib.pyplot as pltimport numpy as npx = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(2, 3, 1)plt.plot(x,y)x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(2, 3, 2)plt.plot(x,y)x = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(2, 3, 3)plt.plot(x,y)x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(2, 3, 4)plt.plot(x,y)x = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(2, 3, 5)plt.plot(x,y)x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(2, 3, 6)plt.plot(x,y)plt.show()

Result:

httpswwwwonherocom

3、标题title()

可以使用title()函数为每个图添加标题:

例如:

2个图,标题:

import matplotlib.pyplot as pltimport numpy as np#plot 1:x = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(1, 2, 1)plt.plot(x,y)plt.title("SALES")#plot 2:x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(1, 2, 2)plt.plot(x,y)plt.title("INCOME")plt.show()

 Result:

httpswwwwonherocom

4、总标题(Super Title)

可以使用suptitle()函数为整个图形添加标题:

例如:

为整个图形添加标题:

import matplotlib.pyplot as pltimport numpy as np#plot 1:x = np.array([0, 1, 2, 3])y = np.array([3, 8, 1, 10])plt.subplot(1, 2, 1)plt.plot(x,y)plt.title("SALES")#plot 2:x = np.array([0, 1, 2, 3])y = np.array([10, 20, 30, 40])plt.subplot(1, 2, 2)plt.plot(x,y)plt.title("INCOME")plt.suptitle("MY SHOP")plt.show()

 Result:

httpswwwwonherocom