条形图宽度不一致

时间:2016-08-19 11:04:04

标签: python matplotlib

请不要太苛刻。 有人可以解释一下为什么这两个地块中的酒吧颜色如此不同?

import numpy as np
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import rcParams

rcParams.update({'figure.autolayout': True})
plt.style.use('ggplot')

def plot3():
    bal=np.cumsum(ret)
    ind = np.arange(len(ret))
    fig, ax = plt.subplots()
    barlist=ax.bar(ind,ret,label="Return")
    ax.plot(ind,bal,color='b',label="Balance")
    for i in ind:
        if ret[i]>=0:
            barlist[i].set_color('g')
        else:
            barlist[i].set_color('r')
    ax.legend(loc='best',frameon=False)
    plt.show()

def plot3b():
    bal=np.cumsum(ret)
    ind = np.arange(len(ret))
    fig, ax = plt.subplots()
    colors=['g' if r>=0 else 'r' for r in ret]
    ax.bar(ind,ret,color=colors,label="Return")
    ax.plot(ind,bal,color='b',label="balance")
    ax.legend(loc='best',frameon=False)
    plt.show()

在我的笔记本电脑中

n=100
ret=np.random.randn(n)
ret=np.insert(ret,0,0)

分别是

plot3

plot3b

1 个答案:

答案 0 :(得分:1)

条形码同时包含facecoloredgecolor,请参阅文档here

似乎set_color()设置了两个条形图的边缘颜色和面颜色,所以在你的第一个图表中,条形图更宽,在第二个图表中,边缘颜色尚未设置

如果更改:
ax.bar(ind,ret,color=colors,label="Return")

要:
ax.bar(ind,ret,color = colors, edgecolor = colors, label="Return")

......然后两个图都是一样的:

<强> plot3() enter image description here

<强> plot3b() enter image description here

请原谅此帖中不同的颜色/颜色拼写。我在英国,在没有&#39; u的情况下拼出颜色感觉不对,所以我拼写了它&#34;我的&#34;不引用函数参数的方法。