前言

上一篇讲的是单图绘制,而多个图形在同一个图像中的绘制也是常见的。


1.组合图绘制

  • 绘制原理:将不同类型图形的代码放置在一起,前提是这些图形的横坐标必须共享,Matplotlib 才能自动将它们组合显示在一张图中。
  • 示例代码
x = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
y_bar = [3, 4, 6, 8, 9, 10, 9, 11, 7, 8]
y_line = [2, 3, 5, 7, 8, 9, 8, 10, 6, 7]

plt.bar(x, y_bar)
plt.plot(x, y_line, '-o', color='y')


2.图形位置定义

(1)基本概念
  • figure:相当于绘画用的画板,是一个顶层容器,用于容纳所有的绘图元素。
  • axes:相当于铺在画板上的画布,我们在画布上进行具体的绘图操作,如 plotset_xlabel 等。

(2)使用 fig.add_axes() 方法
  • 功能:向 figure 画板中添加自定义位置和大小的画布 axes
  • 参数add_axes([left, bottom, width, height]),其中 left 和 bottom 表示画布左下角的坐标,width 和 height 表示画布的宽度和高度,取值范围是 [0, 1]
  • 示例代码
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 20)  # 生成数据
y = x * x + 2

fig = plt.figure()  # 新建图形对象
axes = fig.add_axes([0.5, 0.5, 0.8, 0.8])  # 控制画布的左, 下, 宽度, 高度
axes.plot(x, y, 'r')

  • 大图套小图效果:通过多次调用 add_axes() 方法添加不同大小和位置的画布,实现大图套小图。
fig = plt.figure()  # 新建画板
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])  # 大画布
axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3])  # 小画布

axes1.plot(x, y, 'r')  # 大画布
axes2.plot(y, x, 'g')  # 小画布


(3)使用 plt.subplots() 方法
  • 功能:创建一个包含多个子图的图形,返回一个 figure 对象和一个包含多个 axes 对象的数组。
  • 基本用法
fig, axes = plt.subplots()
axes.plot(x, y, 'r')

  • 子图拼接:通过设置 nrows 和 ncols 参数,可以将多张图按一定顺序拼接在一起。
fig, axes = plt.subplots(nrows=1, ncols=2)  # 子图为 1 行,2 列
for ax in axes:
    ax.plot(x, y, 'r')

  • 调节画布尺寸和显示精度:通过 figsize 参数调节画布的尺寸(单位为英寸),通过 dpi 参数调节显示精度(每英寸点数)。
fig, axes = plt.subplots(figsize=(16, 9), dpi=50)  # 通过 figsize 调节尺寸, dpi 调节显示精度
axes.plot(x, y, 'r')

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐