当绘图上有许多线条时,图例并不总是标记它们的最佳方式。我经常做这样的事情来标记图的右边缘的线条:
def p():
fig, ax = plt.subplots()
x = arange(1, 3, 0.01)
for i,c in zip(range(4), ('r','g','b','m')):
ax.plot(x, x**i, c=c, lw=2)
ax.annotate('$x^%d$' % i, (1.01, x[-1]**i),
xycoords=('axes fraction', 'data'), color=c)
return ax
这只是一个简单的例子,只有几行。它看起来像这样:
>>> p()
但是如果我需要更改绘图的限制,标签就在错误的位置:
>>> p().set_xlim((1.0, 2.0))
问题:最简单的方法是直接在绘图上标记线条(不使用图例),不会因为更改轴限制而破坏?
答案 0 :(得分:2)
你只需要这样做:
xlim = 2.0
def p():
fig, ax = plt.subplots()
x = np.arange(1, 3, 0.01)
for i,c in zip(range(4), ('r','g','b','m')):
ax.plot(x, x**i, c=c, lw=2)
ax.annotate('$x^%d$' % i, (1.01, min(x, key=lambda x:abs(x-xlim))**i),
xycoords=('axes fraction', 'data'), color=c)
return ax
差异
min(x, key=lambda x:abs(x-xlim))
这个东西在列表X中找到输入数字
附近的数字