gpt4 book ai didi

python - 使用线条在另一个图形中创建图形并链接它们

转载 作者:行者123 更新时间:2023-12-01 00:14:24 25 4
gpt4 key购买 nike

我想将同一个图中的一个图形与另一个图形链接起来,并将较小的图形与较大的图形“连接”,因为它们共享 X 轴,但不共享 Y 轴。当我使用该功能时,问题就来了,我真的不太清楚它是如何工作的。

函数 ax2.set_axes_locator(ip) 调用另一个 ip=InsetPosition(ax1,[0.2,0.7,0.5,0.25]),其中 ax1 代表更大的图形。问题是该函数会自动生成将较大的图形与较小的图形连接起来的线条,但我无法重定向它们,但我想这样做,因为两个图形不共享 Y 轴。

我希望有人能理解这个问题,我的英语肯定不是最好的。

enter image description here

ax2=plt.axes([0,0,1,1])
ip=InsetPosition(ax1,[0.2,0.7,0.5,0.25])
ax2.set_axes_locator(ip)
mark_inset(ax1,ax2,loc1=3,loc2=4,fc="none",ec='0.5')

最佳答案

您不能使用mark_inset,因为这将在与插入轴的 View 限制相同的数据坐标处显示标记。

相反,您可以创建一个矩形和两个连接器,它们将在轴上任意定位。 (以下代码需要 matplotlib 3.1 或更高版本)

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


fig, ax = plt.subplots()
ax.plot([1,3,5], [2,4,1])
ax.set_ylim([0, 10])
ax.set_ylabel("Some units")

axins = ax.inset_axes([.2, .7, .4, .25])
axins.plot([100, 200], [5456, 4650])
axins.set_ylabel("Other units")

rect = [2.1, 2.6, 1, 2]
kw = dict(linestyle="--", facecolor="none", edgecolor="k", linewidth=0.8)
ax.add_patch(plt.Rectangle(rect[:2], *rect[2:], **kw))
cp1 = ConnectionPatch((rect[0], rect[1]+rect[3]), (0,0), coordsA="data", axesA=ax,
coordsB="axes fraction", axesB=axins, clip_on=False, **kw)
cp2 = ConnectionPatch((rect[0]+rect[2], rect[1]+rect[3]), (1,0), coordsA="data", axesA=ax,
coordsB="axes fraction", axesB=axins, clip_on=False, **kw)
ax.add_patch(cp1)
ax.add_patch(cp2)
plt.show()

enter image description here

关于python - 使用线条在另一个图形中创建图形并链接它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418797/

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