2016-01-11 4 views
3

Я хотел бы создать легенду в matplotlib с максимально 5 записями на столбец. Прямо сейчас, я могу вручную установить количество колонок, как так:Создание легенды matplotlib с динамическим числом столбцов

leg = plt.legend(loc='best', fancybox=None, ncol=2) 

Как изменить это так, чтобы не более 5 записей разрешено в колонке?

ответ

4

Нет встроенного способа указать количество строк вместо количества столбцов. Однако вы можете получить количество элементов, которые будут добавлены в легенду, используя метод 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() 

enter image description here

+0

спасибо! это большой soln – user308827

Смежные вопросы