Проблема с легендой в matplotlib - PullRequest
1 голос
/ 24 апреля 2019

Итак, у меня есть гистограмма сравнения, которая корректно отображает данные, но всякий раз, когда я пытаюсь вызвать метод легенды, я получаю сообщение об ошибке: «Не найдено ручек с метками, которые можно вставить в легенду»

def plotSiteByYear(dict1, dict2):
    ''' creates a bar chart comparison of the cancer sites of chosen years
    '''
    values1 = dict1.values()    # y values of dictionaries
    values2 = dict2.values()

    oKeys = []                  # creating empty lists first
    nKeys = []
    oKeys = list(dict1.keys())  # x values of dictionaries
    nKeys = list(dict2.keys())

    x1 = list(range(len(oKeys)))

    ind = np.arange(len(dict1))
    width = 0.4
    opacity = 0.7

    fig, ax = plt.subplots()
    #plotting older year (2005)
    rects1 = plt.bar(ind - width/2, values1, width, alpha = opacity, color = '#2d4dff', align='center',)
    #plotting more recent year (2015)
    rect2 = plt.bar(ind + width/2, values2, width, alpha = opacity, color = '#d4bee8', align='center')

    # labels / legend
    ax.set_ylabel('Number of Cancer Incidences')
    ax.set_xlabel('Location of Cancer Site')
    ax.set_title('Number of Cancer Incidences by Site in 2005 vs. 2015')
    ax.set_xticks(x1)
    ax.set_xticklabels(oKeys, rotation=90)
    # need to add a legend
    ax.legend()

    plt.show()

Все остальное для моей гистограммы правильно, но я не могу заставить легенду появиться

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Это связано с тем, что при построении гистограммы вы не указывали никаких меток.Самый простой способ - передать метки во время печати.В вашем случае это будет выглядеть как

fig, ax = plt.subplots()

rects1 = plt.bar(ind - width/2, values1, width, alpha=opacity, 
                 color='#2d4dff', align='center',label='2005') # <--- Label added here

rect2 = plt.bar(ind + width/2, values2, width, alpha=opacity, 
                color='#d4bee8', align='center', label='2015') # <--- Label added here

# Rest of the code
ax.legend()
0 голосов
/ 24 апреля 2019

legend() показывает значения «метки».Вы можете установить их в функции графика или с помощью set_label()

Попробуйте:

rects1.set_label("MyLabel")
ax.legend()
...