簡體   English   中英

在使用Matplotlib處理縮放時繪制兩個子圖之間的線

[英]Plot a line between two subplots while handling the zoom with Matplotlib

我希望能夠在Matplotlib中的兩個子圖之間畫一條線。 目前,我使用本SO主題中提供的方法: 在Matplotlib中繪制兩條圖之間的線,從而使用transFigure和matplotlib.lines.Line2D

但是,當我放大我的圖形時(兩個子圖共享相同的x和y軸),該線不會更新,即它在圖框中保持相同的坐標,但不在我的軸框架中。

是否存在一種處理此問題的簡單方法?

作為鏈接問題中的注釋( Matplotlib中兩個圖之間的繪制線 )表明,您應該使用ConnectionPatch來連接圖。 這個ConnectionPatch的好處不僅在於它易於實現,而且還可以與數據一起移動和縮放。

以下是如何使用它的示例。

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

fig, (ax1, ax2) = plt.subplots(1,2, sharex=True, sharey=True) 

x,y = np.arange(23), np.random.randint(0,10, size=23)
x=np.sort(x)
i = 10
ax1.plot(x,y, marker="s", linestyle="-.", c="r")
ax2.plot(x,y, marker="o", linestyle="", c="b")

con = ConnectionPatch(xyA=(x[i],y[i]), xyB=(x[i],y[i]), 
                      coordsA="data", coordsB="data",
                      axesA=ax2, axesB=ax1, arrowstyle="-")

ax2.add_artist(con)

plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM