Matplotlib条形图不绘制边框/边

时间:2017-10-18 15:46:04

标签: python matplotlib

我的条形码有这个代码。

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

我认为应该让我的条形图有绿色边缘。但事实并非如此。它在最左边的绿色上形成一个条形。我究竟做错了什么? Facecolor有效。

enter image description here

3 个答案:

答案 0 :(得分:5)

不幸的是,this is a bug in matplotlib 2.1。它在matplotlib 2.2版中修复。

截至目前,解决方法是分别为每个条设置edgecolor和linewidth:

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

答案 1 :(得分:2)

如前所述,这是一个matplotlib bug。然而,它只是缺少edgecolor的广播,所以这是一个更紧凑的解决方法:

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

答案 2 :(得分:1)

另一种解决方案是传递alpha参数:

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

注意:仅当您设置的edgecolor为黑色时才有效,否则第一列将具有正确的edgecolor,其余的将为黑色