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

matplotlibserver side programmingprogramming

要在 matplotlib 中绘制两个图之间的线条,我们可以采取以下步骤 −

  • 创建一个新图形或激活一个现有图形。

  • 将两个轴(ax1 和 ax2)添加到图形中作为子图排列的一部分。

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

  • 在两个轴(ax1 ax2)上绘制 x 和 y 数据点,其中 color=red marker=diamond

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

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

  • 添加连接两个点(可能在不同的轴上)con1 和 con2 的补丁。

  • 为 con1 和 con2 添加艺术家

  • 在 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()

输出


相关文章