python - 为绘制列表的曲线下面积着色

标签 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')

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

最佳答案

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']]

关于python - 为绘制列表的曲线下面积着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205930/

相关文章:

python - 安装包后仍然出现"No module named xxx"

python - 使用python从word文档的第一页提取文本

python - pandas DataFrame 绘图标记

python - 重叠的 yticklabels : Is it possible to control cell size of heatmap in seaborn?

python - 如何减少或以其他方式影响极坐标图中的径向刻度数?

python - 出现空白图像

python - 使用 python 加载 CCITT T.3 压缩 tiff 的最佳方法是什么?

python - 创建一个新的 DataFrame,将列字典中的每个键添加为标题

python - 棘手的字符串匹配

python - 最好使用 yum 在 RedHat 上安装 matplotlib