使用`fill_between`在matplotlib中进行可变长度着色

问题描述 投票:0回答:1

我正在尝试为绘图生成可变长度着色。现在,我只有实际线条的固定长度阴影。

a    = np.linspace(1, 10)
loga = np.log(a)

_, ax = plt.subplots()

ax.plot(a, loga, lw=3, color='#27AE60', alpha=1)
ax.fill_between(a, loga+0.2, loga-0.2, color='#539caf', alpha=0.1)

ax.set_title("log plot")
plt.legend(["natural log"], loc="upper left")

相应的情节是:

log plot

但是,我想得到一个如下图所示的情节。 src: MSc-thesis

variable-length-shading

如何修改我的代码以生成这样的可变长度着色?我的意思是,当我们从左到右(即x轴上的值增加)时,线后面要遮蔽的区域应该增加。我将不胜感激任何帮助。圣诞快乐!

python python-3.x matplotlib plot shading
1个回答
0
投票

答案非常明显。 fill_between的参数是x值,填充区域上边缘的y值和下边缘的y值。修改这两个将改变着色区域:

import matplotlib.pyplot as plt
import numpy as np

a    = np.linspace(1, 10)
loga = np.log(a)

_, ax = plt.subplots()

ax.plot(a, loga, lw=3, color='#27AE60', alpha=1)
ax.fill_between(a, loga+np.linspace(0,1,a.size), loga-np.linspace(0,1,a.size), color='#539caf', alpha=0.1)

ax.set_title("log plot")
plt.legend(["natural log"], loc="upper left")

plt.show()
plt.savefig('so.png')

enter image description here

现在,关于如何定义这些边界......当然这取决于你想要这些线的含义(即你的数据)。这是特定问题,你没有提到任何问题。 (可能不是编程,所以非现场)。

© www.soinside.com 2019 - 2024. All rights reserved.