matplotlib——图形对象figure及区域对象axe

创建图形对象

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(-10, 10)
y = x**2

matplotlib——图形对象figure及区域对象axe_第1张图片

fig = plt.figure('f1', figsize=(6, 4), dpi=50, facecolor='gray', frameon=True)
plt.plot(x, y)

matplotlib——图形对象figure及区域对象axe_第2张图片




绘制多子图

figure 是绘制对象(可理解为一个空白的画布),一个 figure 对象可以包含多个 Axes 子图,一个 Axes 是一个绘图区域,不加设置时,Axes为1,且每次绘图其实都是在figure上的Axes上绘图。

我们是在图形对象上面的 Axes 区域进行作画

绘制子图的几种方式:

  • add.axes() : 添加区域
  • subplot() : 均等地划分画布,只是创建一个包含子图区域的画布,(返回区域对象)
  • subplots() : 既创建了一个包含子图区域的画布,又创建了一个 figure 图形对象,(返回图形对象和区域对象)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiEiLPlJ-1648631193276)(attachment:image.png)]

# 首先创建画布对象
fig = plt.figure(facecolor='g',figsize=(6, 4), dpi=80)

# ax1 从画布起始位置绘制,宽度和高度与画布一致
ax1 = fig.add_axes([0, 0, 1, 1])

# ax2 从画布 20% 的位置开始绘制,宽度和高度是画布的 50% 
ax2 = fig.add_axes([0.2, 0.2, 0.5, 0.5])

# 在区域中作画
ax1.plot(x, y)
ax2.plot(x, y)

matplotlib——图形对象figure及区域对象axe_第3张图片

注意

只有区域对象才可调用 plot() 方法,图形对象是不可以调用的。 但是plt.plot() 却不会报错,是因为 plt 默认返回的是一个区域,验证一下。

fig = plt.figure()
ax1 = fig.add_axes([0, 0, 1, 1])
ax2 = fig.add_axes([0.2, 0.2, 0.5, 0.5])
plt.plot(x, y, color='g')
plt.plot(x, x, color='r')
plt.plot(x, 2*x, color='b')

matplotlib——图形对象figure及区域对象axe_第4张图片

若在 ax2 后面调用plt.plot() 会默认返回 ax2 区域

fig = plt.figure()
ax1 = fig.add_axes([0, 0, 1, 1])
plt.plot(x, y, color='g')
plt.plot(x, x, color='r')

ax2 = fig.add_axes([0.2, 0.2, 0.5, 0.5])
plt.plot(x, 2*x, color='b')

matplotlib——图形对象figure及区域对象axe_第5张图片

matplotlib——图形对象figure及区域对象axe_第6张图片

# 创建 2行2列的子图,返回图形对象(画布),所有子图的区域
fig, axes = plt.subplots(2, 2)
x = np.arange(-2, 5)

ax1 = axes[0][0]
ax1.plot(x, x**2)
ax1.set_title('square')

axes[0][1].plot(x, np.sqrt(x))
axes[0][1].set_title('sqrt')

axes[1][0].plot(x, np.exp(x))
axes[1][0].set_title('exp')

axes[1][1].plot(x, np.log10(x))
axes[1][1].set_title('log10')

# 处理遮挡标题
plt.tight_layout()
C:\Users\11434\AppData\Local\Temp/ipykernel_13664/2890334170.py:9: RuntimeWarning: invalid value encountered in sqrt
  axes[0][1].plot(x, np.sqrt(x))
C:\Users\11434\AppData\Local\Temp/ipykernel_13664/2890334170.py:15: RuntimeWarning: divide by zero encountered in log10
  axes[1][1].plot(x, np.log10(x))
C:\Users\11434\AppData\Local\Temp/ipykernel_13664/2890334170.py:15: RuntimeWarning: invalid value encountered in log10
  axes[1][1].plot(x, np.log10(x))

matplotlib——图形对象figure及区域对象axe_第7张图片


你可能感兴趣的:(数据分析,python,大数据,数据分析)