【发布时间】:2016-03-24 22:22:45
【问题描述】:
我只想用不同数字的子图(根据结果从一到五个)在我的图中绘制一个图例。图例应始终绘制在第一个 plot1 上方。有没有办法明确告诉 matplotlib 使用第一个图来绘制图例,而不是最后一个2?
我尝试手动计算位置,以防有多个绘图,但它不是很精确,也不是一个好的解决方案。
编辑:解释一下。我知道如何为许多子图只绘制一个图例(如图 2 所示),但我想知道如何将图例修复到绘制的第一个图而不是最后一个图。我试图根据情节编号计算位置,但它并不精确,有时看起来很丑(传说进入情节)。我想知道我是否可以告诉 matplotlib 将图例始终修复到 subplot1。
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
plt.figure(1, figsize=(12, 10))
nrows = 5
ncols = 1
plot_number = 1
for i in range(3):
plot = plt.subplot(nrows, ncols, plot_number)
plot_number += 1
p3 = mlines.Line2D([], [], color='r')
p4 = mlines.Line2D([], [], color='b')
plt.legend([p3, p4], ['one', 'two'],loc=4, ncol=4, mode="", borderaxespad=.5, frameon=True,
bbox_to_anchor=(0., 1.02, 1., .102))
plt.show()
【问题讨论】:
-
展示示例代码通常会更好,即使它在您看来是微不足道的。对我们来说,在现有代码的基础上进行构建比从头开始为您编写代码要容易得多。
-
对不起,我忘了添加我的代码。我知道您提到的链接,但我想知道如何直接对 matplotlib 说以修复图例以绘制一个。我没有固定数量的地块,因此没有固定的位置。这就是问题所在。
标签: python matplotlib legend