使用 `fill_between` 在 matplotlib 中进行可变长度着色
Variable length shading in matplotlib using `fill_between`
我正在尝试为情节生成可变长度的阴影。现在,我只有 固定长度的阴影 来自实际的线。
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")
对应剧情为:
但是,我想要一个如下图所示的情节。 src: MSc-thesis
如何修改我的代码来生成这种可变长度的阴影?我的意思是 线后面的阴影区域 应该随着我们从左到右移动而增加(即随着 x 轴上的值增加)。如果有任何帮助,我将不胜感激。圣诞快乐!
答案非常明显。 fill_between
的参数是填充区域顶部边缘的 x 值、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')
现在,关于如何定义这些边界……当然,这取决于您希望这些行具有的含义(即您的数据)。这确实是特定于问题的,您什么也没提到。 (并且可能与编程无关,所以不在现场)。
我正在尝试为情节生成可变长度的阴影。现在,我只有 固定长度的阴影 来自实际的线。
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")
对应剧情为:
但是,我想要一个如下图所示的情节。 src: MSc-thesis
如何修改我的代码来生成这种可变长度的阴影?我的意思是 线后面的阴影区域 应该随着我们从左到右移动而增加(即随着 x 轴上的值增加)。如果有任何帮助,我将不胜感激。圣诞快乐!
答案非常明显。 fill_between
的参数是填充区域顶部边缘的 x 值、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')
现在,关于如何定义这些边界……当然,这取决于您希望这些行具有的含义(即您的数据)。这确实是特定于问题的,您什么也没提到。 (并且可能与编程无关,所以不在现场)。