3

当情节上有很多线条时,图例并不总是标记它们的最佳方式。我经常做这样的事情来标记情节右侧的线条:

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))

在此处输入图像描述

问题:以不会因更改轴限制而破坏的方式直接在绘图上(不使用图例)标记线的最简单方法是什么?

4

1 回答 1

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 中找到输入数字附近的数字

在此处输入图像描述

于 2013-08-23T12:40:22.243 回答