2017-10-18 241 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) 

注:这只能当您正在设置的边缘颜色为黑色,否则第一列将具有正确的边缘颜色,其余部分将为黑色