2017-03-08 28 views
0

我運行下面的代碼在Python 2,直接從該站點採取:matplotlib條形圖例如不匹配網站

http://matplotlib.org/examples/api/barchart_demo.html

import numpy as np 
import matplotlib.pyplot as plt 

%matplotlib inline 

N = 5 
men_means = (20, 35, 30, 35, 27) 
men_std = (2, 3, 4, 1, 2) 

ind = np.arange(N) # the x locations for the groups 
width = 0.35  # the width of the bars 

fig, ax = plt.subplots() 
rects1 = ax.bar(ind, men_means, width, color='r', yerr=men_std) 

women_means = (25, 32, 34, 20, 25) 
women_std = (3, 5, 2, 3, 3) 
rects2 = ax.bar(ind + width, women_means, width, color='y', yerr=women_std) 

# add some text for labels, title and axes ticks 
ax.set_ylabel('Scores') 
ax.set_title('Scores by group and gender') 
ax.set_xticks(ind + width/2) 
ax.set_xticklabels(('G1', 'G2', 'G3', 'G4', 'G5')) 

ax.legend((rects1[0], rects2[0]), ('Men', 'Women')) 


def autolabel(rects): 
    """ 
    Attach a text label above each bar displaying its height 
    """ 
    for rect in rects: 
     height = rect.get_height() 
     ax.text(rect.get_x() + rect.get_width()/2., 1.05*height, 
       '%d' % int(height), 
       ha='center', va='bottom') 

autolabel(rects1) 
autolabel(rects2) 

plt.show() 

令人奇怪的是,當這個顯示第一杆對應到「G1」顯示觸摸Y軸的邊緣,而不是它在網站上顯示的方式。

我有與其他條形圖相同的問題即時通訊創建如此試圖瞭解如何我可以空間欄 - 基本上留下任何一方的保證金。

MY OUTPUT

回答

0

您鏈接到的例子是matplotlib版本2.0。但是,您正在運行1.5或更低版本。所以你需要參考以前版本的例子:barchart example for 1.5
或者,您可以將matplotlib更新到版本2.0。

爲了在邊緣處添加空間,則可以使用

plt.margins(x=0.05) or ax.margins(x=0.05)

與任何數目的,只要你喜歡軸長度的一小部分。
或者,也可以設置座標軸的限制,像

plt.xlim((0,N)) or ax.set_xlim((0,N))

其中N是條的數量。