4.9Python数据处理篇之Matplotlib系列(九)---子图分布

目录

前言

前面我们已经知道,一个figure可以画一张画布,今天我们讲的是在同一个figure里画多张子图,我们要用的是subplot与subplot2grid()方法来绘制子图。

(一)subplot()方法

1.语法说明

subplot是均匀的分割绘图区,来进行子图的放置。

  1. 需要注意的是subplot并不适合来绘制跨行或者跨列的子图,跨行与跨列的子图绘制,交给subplot2grid()更容易完成。
  2. 如果分割的图只是个位数时,那么原本的表示方法:(2,2,1),与(221)等效,其他的不可如此。

2.源代码

# 导入模块
import matplotlib.pyplot as plt
import numpy as np

# 数据
x = np.linspace(-10, 10, 100)
y1 = x
y2 = x**2
y3 = x**3

# 创建一个figure窗体
fig = plt.figure(num="子图得比较")
fig.suptitle("draw some subplot")

# 绘制第一个子图
ax1 = plt.subplot(2, 2, 1)
plt.plot(x, y1)
ax1.set_title("y1 = x")

# 绘制第二个子图
ax2 = plt.subplot(222)
plt.plot(x, y2)
ax2.set_title("y2=x**2")


# 绘制第三个子图
ax3 = plt.subplot(223)
plt.plot(x, y3)
ax3.set_title("y3=x**3")

# 展示
plt.show()

3.输出效果

01.png

(二)subplot2grid方法

1.语法说明

subplot2grid((分割),(起始位置),colspan=列宽, rowspan=行宽)

例如:plt.subplot2grid((3, 3), (1, 0), colspan=2, rowspan=1),

将整块figure画布分成3行3列的格子,从第2行,第一列画起该子图,列宽占两格,行宽占一格。

像figure一样,定义subplot2grid()子图以后,后续的操作都在该子图上,直到另一个子图的出现。

2.源代码

import matplotlib.pyplot as plt

# 创建画布
plt.figure()
# 创建子图
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3, rowspan=1)
ax1.plot([1, 2], [1, 2])
ax1.set_title("No1")
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2, rowspan=1)
ax3 = plt.subplot2grid((3, 3), (1, 2), colspan=2, rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0), colspan=1, rowspan=1)
ax5 = plt.subplot2grid((3, 3), (2, 1), colspan=1, rowspan=1)

plt.show()

3.展示效果

02.png

作者:Mark

日期:2019/02/01 周五

原文地址:https://www.cnblogs.com/zyg123/p/10517711.html