python -  Pandas matplotlib.pyplot通过列值添加图例-LMLPHP我正在使用熊猫制作散点图。我的数据如下所示:



    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),dpi = 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]')


尝试添加图例。
我想显示与他们的“联想全球区域”相对应的颜色,但是它不起作用,仅将一个区域“ America Groups”显示为蓝点

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


谢谢,如果您有想法!

最佳答案

也许这是您在最后一行中需要的:

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

关于python - Pandas matplotlib.pyplot通过列值添加图例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38234115/

10-11 08:55