将绘制列表的曲线下的区域着色

时间:2013-01-07 23:32:22

标签: python matplotlib

我使用以下代码生成一次有多条曲线的图形:

for i in data.find():
    a=[]
    for element in i["counts"]:
        a.append(element["total"])
    plt.plot(a)

plt.show()

我希望能够为每条曲线下的特定区域着色。比如说,对于曲线1,区间x:[3,21],x:[28,29]和x:[42,51]

我相信我不能使用以下变体,因为y不是x的函数。 y只是一个整数列表。

plt.fill_between(x,y,0,color='0.8')

有没有办法解决这个问题? 非常感谢。

1 个答案:

答案 0 :(得分:1)

plt.plot(a)equivalent to plt.plot(np.arange(len(a)),a),通过它,您可以更轻松地了解如何使用fill_between

where = np.zeros(len(a),dtype=bool)
where[3:21] = True
plt.fill_between(np.arange(len(a)),a,where=where)

作为旁注,

a=[]
for element in i["counts"]:
    a.append(element["total"])

通常更好地写作列表理解:

a = [element['total'] for element in i['counts']]
相关问题