2017-10-18 256 views
6

我有我的條形圖代碼。Matplotlib條形圖不繪製邊框/邊緣

ax1 = plt.subplot2grid((1,1),(0,0)) 
ax1.bar(edges2, Nnorm, width=0.02, edgecolor='green', linewidth=20) 

我認爲應該讓我的條形圖有綠色的邊緣。但事實並非如此。它使最左邊的一個酒吧綠色。我究竟做錯了什麼? Facecolor的作品。

enter image description here

回答

4

不幸的是,this is a bug in matplotlib 2.1。它應該在下一個版本中修復。

截至目前一種解決方法是設置edgecolor和線寬爲每個單獨的條:

import matplotlib.pyplot as plt 

bars = plt.bar(range(4), [3,4,1,5]) 
for bar in bars: 
    bar.set_edgecolor("green") 
    bar.set_linewidth(20) 

plt.show() 

enter image description here

+0

完美。不幸的錯誤,但這種工作效果很好。謝謝!我會密切關注更新。 – Nertskull

1

前面已經解釋過,這是一個matplotlib bug。然而,這僅僅是edgecolor的缺失廣播,所以這裏有一個更緊湊的解決方法:

plt.bar(x, y, linewidth=20, edgecolor=['g']*len(x)) 
1

另一種解決方案是通過一個alpha參數:

plt.bar(range(4), [3,4,1,5], alpha=1, edgecolor='k', linewidth=20) 

注:這隻能當您正在設置的邊緣顏色爲黑色,否則第一列將具有正確的邊緣顏色,其餘部分將爲黑色