首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matplotlib中注释尺寸

在matplotlib中注释尺寸
EN

Stack Overflow用户
提问于 2013-02-15 18:23:51
回答 2查看 3.4K关注 0票数 3

我想在matplotlib图中注释某些长度。例如,点A和B之间的距离。

为此,我想我可以使用annotate并弄清楚如何提供箭头的开始和结束位置。或者,使用arrow并标记该点。

我试着使用后者,但我想不出如何得到一个双头箭头:

代码语言:javascript
复制
from pylab import *

for i in [0, 1]:
    for j in [0, 1]:
        plot(i, j, 'rx')

axis([-1, 2, -1, 2]) 
arrow(0.1, 0, 0, 1, length_includes_head=True, head_width=.03) # Draws a 1-headed arrow
show()

如何创建双头箭头?更好的是,有没有另一种(更简单的)方法来标记matplotlib图中的尺寸?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 18:39:01

可以使用arrowstyle属性更改箭头的样式,例如

代码语言:javascript
复制
ax.annotate(..., arrowprops=dict(arrowstyle='<->'))

给出了一个双头箭头。

一个完整的示例可以在大约三分之一的页面中找到,其中可能有不同的样式。

至于在地块上标记尺寸的“更好”方法,我想不出有什么好的方法。

编辑:这是一个完整的例子,如果有帮助,你可以使用它

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

def annotate_dim(ax,xyfrom,xyto,text=None):

    if text is None:
        text = str(np.sqrt( (xyfrom[0]-xyto[0])**2 + (xyfrom[1]-xyto[1])**2 ))

    ax.annotate("",xyfrom,xyto,arrowprops=dict(arrowstyle='<->'))
    ax.text((xyto[0]+xyfrom[0])/2,(xyto[1]+xyfrom[1])/2,text,fontsize=16)

x = np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
annotate_dim(plt.gca(),[0,0],[np.pi,0],'$\pi$')

plt.show()
票数 9
EN

Stack Overflow用户

发布于 2020-12-30 06:58:52

下面的图给出了一个很好的尺寸:注释添加了两次,使用不同的箭头('<->‘和'|-|'),之后将文本放在行的中间,并使用bbox覆盖标签下的线。

代码语言:javascript
复制
axs[0].annotate("", xy=(0, ht), xytext=(w, ht), textcoords=axs[0].transData, arrowprops=dict(arrowstyle='<->'))
axs[0].annotate("", xy=(0, ht), xytext=(w, ht), textcoords=axs[0].transData, arrowprops=dict(arrowstyle='|-|'))
bbox=dict(fc="white", ec="none")
axs[0].text(w/2, ht, "L=200 m", ha="center", va="center", bbox=bbox)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14892619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档