gpt4 book ai didi

python - 在 matplotlib 中使用 ax.annotate 返回箭头和文本

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:14 26 4
gpt4 key购买 nike

使用 matplotlib 的面向对象方法,有没有办法访问使用 ax.annotate 时绘制的箭头。

这个命令似乎将文本作为对象返回,但不是箭头。使用 show_children 命令时我也找不到箭头。

请问这个箭头可以访问吗?我只是想获取绘图上的所有箭头并更改它们的颜色。

plt.plot(np.arange(5), 2* np.arange(5))
plt.plot(np.arange(5), 3*np.arange(5))
ax = plt.gca()

text = ax.annotate('TEST', xytext=(2,10), xy=(2,2), arrowprops=dict(arrowstyle="->"))

ax.get_children()

返回

[<matplotlib.lines.Line2D at 0x207dcdba978>,
<matplotlib.lines.Line2D at 0x207de1e47f0>,
Text(2,10,'TEST'),
<matplotlib.spines.Spine at 0x207dcb81518>,
<matplotlib.spines.Spine at 0x207de05b320>,
<matplotlib.spines.Spine at 0x207de0b7828>,
<matplotlib.spines.Spine at 0x207de1d9080>,
<matplotlib.axis.XAxis at 0x207de1d9f28>,
<matplotlib.axis.YAxis at 0x207de049358>,
Text(0.5,1,''),
Text(0,1,''),
Text(1,1,''),
<matplotlib.patches.Rectangle at 0x207de049d30>]

谢谢

最佳答案

首先请注意,可以在创建注释时使用 arrowprops 中的 color 参数设置箭头的颜色:

ax.annotate('TEST', xytext=(.2,.1), xy=(.2,.2), 
arrowprops=dict(arrowstyle="->", color="blue"))

如果之后确实需要改变颜色,则需要从文本中获取箭头的补丁。
如果箭头是用Annotation 生成的,则Annotation 对象具有属性arrow_patch。您可以使用它来访问箭头补丁,如

text = ax.annotate( ... )
text.arrow_patch.set_color("red")

当然,您可以循环遍历所有子项并检查它们是否包含箭头。完整示例:

import matplotlib.pyplot as plt
ax = plt.gca()

text = ax.annotate('TEST', xytext=(.2,.1), xy=(.2,.2), arrowprops=dict(arrowstyle="->"))
text2 = ax.annotate('TEST2', xytext=(.5,.5), xy=(.2,.2), arrowprops=dict(arrowstyle="->"))

# access each object individually
#text.arrow_patch.set_color("red")
# or

for child in ax.get_children():
if isinstance(child,type(text)):
if hasattr(child, "arrow_patch"):
child.arrow_patch.set_color("red")

plt.show()

关于python - 在 matplotlib 中使用 ax.annotate 返回箭头和文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47275623/

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