在子图的位置添加图例

4

我想把图例放在中心子图的位置(并删除它)。 我编写了以下代码:

import matplotlib.pylab as plt
import numpy as np

f, ax = plt.subplots(3,3)
x = np.linspace(0, 2. * np.pi, 1000)
y = np.sin(x)

for axis in ax.ravel():
    axis.plot(x, y)
    legend = axis.legend(loc='center')

plt.show()

我不知道如何隐藏一个中心图表。为什么图例没有出现?

example plot

这个链接没有帮助 http://matplotlib.org/1.3.0/examples/pylab_examples/legend_demo.html

1个回答

5
您的代码存在几个问题。在您的for循环中,您尝试在每个轴上绘制图例(loc="center"是指轴,而不是整个图形),但是您没有给出要在图例中表示的图表标签。
您需要在循环中选择中央轴,并仅为该轴显示图例。此循环迭代也不应该有plot调用,如果您不想在那里绘制一条线。您可以使用一组条件语句来实现这一点,就像我在以下代码中所做的那样:
import matplotlib.pylab as plt
import numpy as np

f, ax = plt.subplots(3,3)
x = np.linspace(0, 2. * np.pi, 1000)
y = np.sin(x)

handles, labels = (0, 0)

for i, axis in enumerate(ax.ravel()):

    if i == 4:
        axis.set_axis_off()
        legend = axis.legend(handles, labels, loc='center')
    else:
        axis.plot(x, y, label="sin(x)")

    if i == 3:
        handles, labels = axis.get_legend_handles_labels()

plt.show()

这给我带来了以下的图像:

这里输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接