2016-07-06 2 views
0

Я использую Pandas для создания разброса. Мои данные выглядят следующим образом:Pandas matplotlib.pyplot добавить легенду по значению столбца

Locations Lenovo Global Region Primary Function Subsidiaries Apr_2015_to_Mar_2016_[kWh] Apr_2015_to_Mar_2016_[MT] color MT/kWh 
263 United Kingdom - Hook EMEA Large Office (OFL) Lenovo 7.561727e+04 129.438515 r 0.001712 
202 South Africa - Johannesburg/Bryanston EMEA Small Office (OSL) Lenovo 1.013746e+05 93.872885 r 0.000926 
232 India - Chennai Factory Asia Pacific Manufacturing (MFG) Motorola Mobility 3.163600e+05 271.933953 g 0.000860 
159 India - Pondicherry Asia Pacific Manufacturing (MFG) Lenovo 1.074016e+06 907.869649 g 0.000845 
242 Australia - Chatswood Asia Pacific Large Office (OFL) Lenovo 3.001254e+05 239.500093 g 0.000798 

(К сожалению, я сделал все возможное, чтобы отформатировать таблицу).

Определите функцию для использования разных цветов для разных регионов.

def colorpoint(row): 
    if row['Lenovo Global Region'] == 'Asia Pacific': 
     return('g') 
    if row['Lenovo Global Region'] == 'EMEA': 
     return('r') 
    else: 
     return('b') 
test3['color'] = test3.apply (lambda row: colorpoint (row),axis=1) 

Определите точки разброса, которые я хочу построить.

y=test3['Apr_2015_to_Mar_2016_[MT]'] 
x=test3['Apr_2015_to_Mar_2016_[kWh]'] 
T = test3['color'] 
area= (y/x)*500000 
xmax=1.1*max(test3['Apr_2015_to_Mar_2016_[kWh]']) 
ymax=1.1*max(test3['Apr_2015_to_Mar_2016_[MT]']) 

участок фигуры. fig1 = plt.figure (figsize = (16,9), 300 точек на дюйм =) ах = plt.subplot (111)

plot=plt.scatter(x,y,alpha=0.6,c=T,s=area) 
ax.grid(True) 
ax.set_xlim([0,xmax]) 
ax.set_ylim([0,ymax]) 
ax.set_xlabel('Apr 2015 to Mar 2016 [kWh]') 
ax.set_ylabel('Apr 2015 to Mar 2016 [MT]') 
ax.set_title('Total Elec consumtion [kWh] VS CO2 emission [MT]') 

Try добавить легенду. Я хочу показать цвета соответствуют их «Lenovo глобальной области», но он не работает, показывая только один регион «Америка Groups», как синяя точка

legend=test3['Lenovo Global Region'] 
plt.legend(legend,loc=4) 

Спасибо, если у вас есть идеи !!

ответ

0

Может быть, это то, что вам нужно в последней строке:

plt.legend(legend.values,loc=4) 
+0

Это не работает, до сих пор черчения то же самое. – Yang