gpt4 book ai didi

python - 在两个单独的一维图之间绘制连接点的线

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:38 25 4
gpt4 key购买 nike

如标题所示,我正在研究时间序列对齐,并且需要对齐结果的可视化。

为此,我想绘制连接对齐算法生成的“ anchor ”的线。

np.random.seed(5)
x = np.random.rand(10) # time-series 1
y = np.random.rand(20) # time-series 2
ap = np.array(([0, 4, 9], # the anchor points
[0, 9, 19]))

fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
ax1.plot(x, 'r')
ax2.plot(y, 'g')

示例中的 anchor ap指定两个时间序列x指数之间的一对一“映射” y,即x[0]对应y[0]x[4]y[9];以及 x[9]y[19]。目标是在两个单独的图之间绘制线条以显示对齐结果。

最佳答案

要连接 matplotlib 中的两个子图,您可以使用 ConnectionPatch

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import ConnectionPatch

np.random.seed(5)
x = np.random.rand(21) # time-series 1
y = np.random.rand(21) # time-series 2
ap = np.array(([0, 5, 10], # the anchor points
[0,10, 20]))

fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
ax1.plot(x, 'r')
ax2.plot(y, 'g')

ls = ["-","--"]
c = ["gold", "blue"]

for i, row in enumerate(ap):
for j, ind in enumerate(row):
px = (ind, x[ind])
py = (ind, y[ind])
con = ConnectionPatch(py,px, coordsA="data", coordsB="data",
axesA=ax2, axesB=ax1, linestyle=ls[i], color=c[i])
ax2.add_artist(con)

plt.show()

enter image description here

关于python - 在两个单独的一维图之间绘制连接点的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44045344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com