如何在matplotlib中注释x轴的范围?

时间:2016-07-30 18:54:43

标签: python numpy matplotlib

我想制作一个注释,例如here,但我需要在x 中显示范围而不是单个点。它类似于技术图纸中的dimension lines

这是我正在寻找的一个例子:

import matplotlib.pyplot as plt
import numpy as np

xx = np.linspace(0,10)
yy = np.sin(xx)

fig, ax = plt.subplots(1,1, figsize=(12,5))
ax.plot(xx,yy)
ax.set_ylim([-2,2])
# -----------------------------------------
# The following block attempts to show what I am looking for
ax.plot([4,6],[1,1],'-k')
ax.plot([4,4],[0.9,1.1],'-k')
ax.plot([6,6],[0.9,1.1],'-k')
ax.annotate('important\npart', xy=(4, 1.5), xytext=(4.5, 1.2) )

enter image description here

如何在maplotlib图表中注释范围?

我正在使用:

python:3.4.3 + numpy:1.11.0 + matplotlib:1.5.1

2 个答案:

答案 0 :(得分:5)

您可以使用两次拨打ax.annotate - 一个用于添加文字,另一个用于绘制一个横截您想要注释范围的平头的箭头:

import matplotlib.pyplot as plt
import numpy as np

xx = np.linspace(0,10)
yy = np.sin(xx)

fig, ax = plt.subplots(1,1, figsize=(12,5))
ax.plot(xx,yy)
ax.set_ylim([-2,2])

ax.annotate('', xy=(4, 1), xytext=(6, 1), xycoords='data', textcoords='data',
            arrowprops={'arrowstyle': '|-|'})
ax.annotate('important\npart', xy=(5, 1.5), ha='center', va='center')

enter image description here

答案 1 :(得分:3)

使用ali_m's answer,我可以定义这个函数,也许它可能对某些人有用:)

<强>功能

annotation_line( ax=ax, text='Important\npart', xmin=4, xmax=6, \
                    y=1, ytext=1.4, linewidth=2, linecolor='red', fontsize=18 )

拨打

char *data="xyz";

<强>输出

enter image description here