def category_count(x):
    return sum(Elig_Subject_line['ELIGIBILITY TYPE'].str.count(x))

Cat_Count = map(lambda x: category_count(x), 
                ['CONTRACT','ITEM','CUSTOMER','REQUEST',
                 'ACCOUNT','INQUIRY','Other'])

[a,b,c,d,e,f,g] = list(Cat_Count)

m = [a,b,c,d,e,f,g]

import numpy as np
import matplotlib.pyplot as plt
import math
Categories = ('CO','IT','CU','RE','AC','IN','Other')
# high = max(m)
# low = min(m)
plt.bar(np.arange(len(m)),m,width =0.5,align ='center',color = ['black', 
'red', 'green', 'blue', 'orange','purple',
                                                                'brown'])
plt.xticks(np.arange(len(m)), Categories)
#plt.ylim([math.ceil(low-0.5*(high-low)), math.ceil(high+0.5*(high-low))])
plt.ylabel('Volume of Items Types')
plt.title('Count of ELIGIBILITY TYPE')
label =['Contract','ITEM','CUSTOMER','REQUEST','ACCOUNT','INQUIRY','OTHER']
#plt.legend(m,label)
plt.legend(label,loc=1)
#plt.figure(figsize =(4,5))
plt.savefig(r'D:\Users\7031\Documents\Mounika\Eligibility 
Type.JPEG',dpi=400,orientation='landscape',figsize =(5,5)) 
plt.show()

Это не показывает другие легенды, кроме контракта

помоги мне!

0
Akash Soni 25 Сен 2018 в 18:33

2 ответа

Лучший ответ

Вы можете перебрать график, чтобы получить доступ к каждому бару:

label =['Contract','ITEM','CUSTOMER','REQUEST','ACCOUNT','INQUIRY','OTHER']
bar_plot = plt.bar(range(7), range(7, 0, -1), color = ['black', 'red', 'green', 'blue',
                                                  'orange','purple', 'brown'])

plt.legend([bar for bar in bar_plot], label)

example_plot

Вы можете найти документ легенды полезным

2
Lucas 25 Сен 2018 в 15:50

Я лично подхожу к этой проблеме, используя цикл for для построения каждого бара отдельно. Могут быть и другие прямые пути. Я использую тестовые данные, чтобы дать ответ.

# imports 
m = [10, 20, 13, 15, 18, 5, 7]
Categories = ('CO','IT','CU','RE','AC','IN','Other')
labels =['Contract','ITEM','CUSTOMER','REQUEST','ACCOUNT','INQUIRY','OTHER']
colors = ['black', 'red', 'green', 'blue', 'orange','purple','brown']

for j in range(len(m)):
    plt.bar(j, m[j], width=0.5,align='center', colors = color[j], label=labels[j])

plt.xticks(np.arange(len(m)), Categories)
plt.legend(loc=1)

< Сильный > Выход

enter image description here

1
Sheldore 25 Сен 2018 в 15:52