首页 > 解决方案 > 如何在不重叠的情况下填充行之间的空格?

问题描述

我想填充以下行之间的空间,但是有些空间似乎重叠。有没有办法禁用重叠的阴影区域?在图像中,重叠区域稍暗。有没有办法摆脱它。

代码是我想要的一个例子,实际上会有很多行

x = np.linspace(0,6,100)
y1 = np.exp(-x)*np.sin(x)
y2 = np.exp(-x)*np.cos(x) + np.exp(-x)*np.sin(x)
y3 =np.exp(-x)*np.cos(-x) + np.exp(-x)*np.sin(-x)


plt.plot(x,y1,'k')
plt.plot(x,y2,'k')
plt.plot(x,y3,'k')


plt.fill_between(x, y1, y2,color='m',alpha=0.2)
plt.fill_between(x, y2, y3,color='m',alpha=0.2)

plt.show()

在此处输入图像描述

标签: pythonnumpymatplotlibplot

解决方案


听起来您想遮蔽最低线和最高线之间的区域。我已经稍微更改了您的代码以使用数组作为行,这使得一次完成所有事情变得更容易。请注意,这如何简化对初始黑线图的调用以及在该数组的列上取最大值和最小值的想法。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,6,100)
ys = np.array([
    np.exp(-x)*np.sin(x),
    np.exp(-x)*np.cos(x) + np.exp(-x)*np.sin(x),
    np.exp(-x)*np.cos(-x) + np.exp(-x)*np.sin(-x),
])

plt.plot(x, ys.T, 'k')

plt.fill_between(x, np.min(ys, axis=0), np.max(ys, axis=0), color='m', alpha=0.2)

plt.show()

此图中的结果:

线和洋红色填充显示最小和最大线之间的阴影


推荐阅读