2017-10-08 137 views
0

分组后,我得到一个系列,如下面的例子。我想显示每个酒吧的平均数字。下面的代码只显示一个条目(当然,因为我只有一个“传说”)。任何人都可以提出一个显示这些数字的巧妙方法吗?迭代熊猫系列创建新图表图例

%matplotlib inline 
import matplotlib.pyplot as plt 
import matplotlib 
matplotlib.style.use('ggplot') 
import pandas 

# create Series 
dict_ = {"Business" : 104.04,"Economy":67.04, "Markets":58.56, "Companies":38.48} 
s = pandas.Series(data=dict_) 

# plot it 
ax = s.plot(kind='bar', color='#43C6DB', stacked=True, figsize=(20, 10), legend=False) 
plt.tick_params(axis='both', which='major', labelsize=14) 
plt.xticks(rotation=30) #rotate labels 
# Shrink current axis by 20% 
box = ax.get_position() 
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height]) 
#create new legend 
legend = ['%s (%.1f a day)' %(i, row/7) for i, row in s.iteritems()] 
# Put the legend to the right of the current axis 
L = ax.legend(legend, loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18) 
plt.show() 

enter image description here

回答

1

传说只有一个条目。这是一个蓝条的句柄。因此,即使您将标签设置为较长的​​列表,也只有该列表的第一个元素被用作现有句柄的标签。

的想法可以复制的传奇手柄具有相同大小的标签

legend = ['%s (%.1f a day)' %(i, row/7) for i, row in s.iteritems()] 
h,l = ax.get_legend_handles_labels() 
L = ax.legend(handles = h*len(legend), labels=legend, loc='center left', 
       bbox_to_anchor=(1, 0.5), fontsize=18) 

enter image description here

+0

美丽!谢谢。 – aviss