Python 将图例放置在子地块的某个位置

Python 将图例放置在子地块的某个位置,python,matplotlib,legend,subplot,Python,Matplotlib,Legend,Subplot,我想在中央子地块的某个位置放置一个图例(并将其删除)。 我写了这段代码: 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')

我想在中央子地块的某个位置放置一个图例(并将其删除)。 我写了这段代码:

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()
我不知道如何隐藏中心情节。为什么传说没有出现


此链接没有帮助

您的代码有几个问题。在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()
这给了我以下图像: