在 Matplotlib 中绘制两幅图之间的线条


要绘制 matplotlib 中两幅图之间的线条,我们可以按以下步骤操作:

  • 创建一副新图像或激活一副现有的图像。

  • 作为子图布置的一部分,向图像中加入两个轴(ax1 和 ax2)。

  • 使用 numpy 创建随机数据 x 和 y。

  • 在 ax1 和 ax2 两个轴上绘制 x 和 y 数据点,颜色为红色,标记为菱形。

  • 初始化两个变量 i 和 j,以获取子图上的不同数据点。

  • 制作 xy 和 mn 元组作为位置,用于在子图上添加补丁。

  • 添加一个补丁,将两个点(可能在不同的轴中)con1 和 con2 连接起来。

  • 为 con1 和 con2 添加 artist。

  • 在 ax1 和 ax2 上绘制数据点 (x[i], y[i]) 和 (x[j], y[j]) 之间的直线,以连接这些补丁。

  • 要显示图像,请使用 show() 方法。

示例

import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
x, y = np.random.rand(100), np.random.rand(100)
ax1.plot(x, y, 'd', c='r')
ax2.plot(x, y, 'd', c='r')
i = 10
xy = (x[i], y[i])
con1 = ConnectionPatch(xyA=xy, xyB=xy, coordsA="data", coordsB="data", axesA=ax2, axesB=ax1, color="blue")
j = 12
mn = (x[j], y[j])
con2 = ConnectionPatch(xyA=mn, xyB=mn, coordsA="data", coordsB="data", axesA=ax2, axesB=ax1, color="blue")
ax2.add_artist(con1)
ax2.add_artist(con2)
ax1.plot(x[i], y[i], 'bo', markersize=10)
ax2.plot(x[i], y[i], 'bo', markersize=10)
ax1.plot(x[j], y[j], 'bo', markersize=10)
ax2.plot(x[j], y[j], 'bo', markersize=10)
plt.show()

输出

更新于: 2021 年 5 月 8 日

2K+ 浏览次数

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告