Matplotlib:图例

日期2011-11-09(最后修改),2007-04-11(创建)

叠加线和标记的图例

如果您有很多点要绘制,您可能希望每隔 *n* 个点设置一次标记,例如

在 [ ]
plot(x, y, '-r')
plot(x[::20], y[::20], 'ro')

然后自动图例将其视为两个不同的绘图。一种方法是创建一个额外的线对象,该对象不在任何地方绘制,但仅用于图例

在 [ ]
from matplotlib.lines import Line2D
line = Line2D(range(10), range(10), linestyle='-', marker='o')
legend((line,), (label,))

另一种可能性是在图例中修改线对象

在 [ ]
line = plot(x, y, '-r')
markers = plot(x[::20], y[::20], 'ro')
lgd = legend([line], ['data'], numpoints=3)
lgd.get_lines()[0].set_marker('o')
draw()

图例在绘图之外

没有简单易行的方法可以将图例添加到绘图之外(在绘图的右侧),但是如果您首先将轴设置正确,它就可以正常工作

在 [ ]
figure()
axes([0.1,0.1,0.71,0.8])
plot([0,1],[0,1],label="line 1")
hold(1)
plot([0,1],[1,0.5],label="line 2")
legend(loc=(1.03,0.2))
show()

从绘图中删除图例

可以简单地将轴的属性设置为并重新绘制

在 [ ]
ax = gca()
ax.legend_ = None
draw()

如果您发现自己经常这样做,请使用以下函数

在 [ ]
def remove_legend(ax=None):
    """Remove legend for ax or the current axes."""

    from pylab import gca, draw
    if ax is None:
        ax = gca()
    ax.legend_ = None
    draw()

(来源:Re: 如何从 matplotlib OO 图表中删除图例?)

更改图例文本的字体大小

请注意,要设置默认字体大小,可以在 matplotlib rc 参数文件中更改 *legend.size* 属性。

要更改单个绘图的字体大小,请在创建图例时使用 matplotlib.font_manager.FontProperties 参数 *prop*。

在 [ ]
x = range(10)
y = range(10)
handles = plot(x, y)
legend(handles, ["label1"], prop={"size":12})

部分作者:Unknown[77],GaelVaroquaux,Unknown[103],Unknown[104],TimSwast