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)
分别是
和
答案 0 :(得分:1)
条形码同时包含facecolor
和edgecolor
,请参阅文档here。
似乎set_color()
设置了两个条形图的边缘颜色和面颜色,所以在你的第一个图表中,条形图更宽,在第二个图表中,边缘颜色尚未设置
如果更改:
ax.bar(ind,ret,color=colors,label="Return")
要:
ax.bar(ind,ret,color = colors, edgecolor = colors, label="Return")
......然后两个图都是一样的:
请原谅此帖中不同的颜色/颜色拼写。我在英国,在没有' u的情况下拼出颜色感觉不对,所以我拼写了它"我的"不引用函数参数的方法。