我想在matplotlib中创建一个图例,每列最多5个条目。现在,我可以像这样手动设置列数:
leg = plt.legend(loc='best', fancybox=None, ncol=2)
如何修改此列,以便每列最多允许5个条目?
答案 0 :(得分:6)
没有内置的方法来指定多个行而不是多个列。但是,您可以使用ax._get_legend_handles()
方法获取要添加到图例中的项目数。
例如:
import numpy as np
import matplotlib.pyplot as plt
numlines = np.random.randint(1, 15)
x = np.linspace(0, 1, 10)
fig, ax = plt.subplots()
for i in range(1, numlines + 1):
ax.plot(x, i * x, label='$y={}x$'.format(i))
numitems = len(list(ax._get_legend_handles()))
nrows = 5
ncols = int(np.ceil(numitems / float(nrows)))
ax.legend(ncol=ncols, loc='best')
plt.show()