gpt4 book ai didi

python - 通过matplotlib中的箭头连接轴中的一个点和另一个轴中的另一个点

转载 作者:太空狗 更新时间:2023-10-30 01:09:44 25 4
gpt4 key购买 nike

使用 matplotlib,我制作了一个包含两个 Axes 对象(即两组 xy 轴)的图形。我想通过箭头或直线连接两点 --- 一个从一个轴上选取,另一个从另一个轴上选取。

我尝试通过使用 annotate() 函数和 ConnectionPatch 对象来做到这一点,但是在这两种方式中,箭头的一部分被轴的“框架”隐藏了。请看附图,其中我试图通过一个 ConnectionPatch 对象连接两个轴的原点。

我还附上了用于生成图形的脚本。

有没有办法让箭头“前移”(或将轴框架推到后面)?

Trying to connect the origins of the two axes.

#!/usr/bin/python
#
# This script was written by Norio TAKEMOTO 2012-5-7


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

# creating a figure and axes.
fig=plt.figure(figsize=(10,5))

ax1=plt.axes([0.05,0.15,0.40,0.80])

plt.xticks([0])
plt.yticks([0])
plt.xlim((-1.23, 1.23))
plt.ylim((-2.34, 2.34))


ax2=plt.axes([0.60,0.15, 0.30, 0.30])

plt.xticks([0])
plt.yticks([0])
plt.xlim((-3.45, 3.45))
plt.ylim((-4.56, 4.56))


# trying to connect the point (0,0) in ax1 and the point (0,0) in ax2
# by an arrow, but some part is hidden. I can't find a solution. Let's
# ask stackoverflow.

#xy_A_ax1=(0,0)
#xy_B_ax2=(0,0)
#
#inv1 = ax1.transData.inverted()
#xy_B_display = ax2.transData.transform(xy_B_ax2)
#xy_B_ax1 = inv1.transform(xy_B_display)
#ax1.annotate('Wundaba', xy=(0, 0), xytext=xy_B_ax1,
# xycoords='data',textcoords='data',
# arrowprops=dict(arrowstyle='->'))


con = ConnectionPatch(xyA=(0, 0), xyB=(0, 0),
coordsA='data', coordsB='data',
axesA=ax1, axesB=ax2,
arrowstyle='->', clip_on=False)
ax1.add_artist(con)

plt.savefig('fig1.eps')
plt.savefig('fig1.png')

最佳答案

一种简单的方法是将透明参数设置为 savefig(),即 plt.savefig('fig1.png', transparent=1):

enter image description here

或者您可以只在第二张图上使用透明度:

ax2.patch.set_facecolor('无')

如第 21 行。

关于python - 通过matplotlib中的箭头连接轴中的一个点和另一个轴中的另一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10488355/

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