2017-10-08 37 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