在python中填充两条曲线之间的区域

时间:2019-09-17 07:11:38

标签: python python-3.x matplotlib scatter-plot

我正在尝试绘制两条曲线之间的阴影区域。 这是我绘制的。 enter image description here

使用以下代码。

plt.scatter(z1,y1, s = 0.5, color = 'blue')
plt.scatter(z2,y2, s = 0.5, color = 'orange')

我尝试使用plt.fill_between(),但是要使其正常工作,我需要在x_axis上具有相同的数据(将需要执行类似plt.fill_between(x,y1,y2)的操作)。 还有其他功能可能对此有帮助吗?还是我只是错误地使用了fill_between

2 个答案:

答案 0 :(得分:3)

您可以尝试:

plt.fill(np.append(z1, z2[::-1]), np.append(y1, y2[::-1]), 'lightgrey')

例如:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.array([1,2,3])
y1 = np.array([2,3,4])
x2 = np.array([2,3,4,5,6])
y2 = np.array([1,2,3,4,5])
# plt.plot(x1, y1, 'o')
# plt.plot(x2, y2, 'x')

plt.scatter(x1, y1, s = 0.5, color = 'blue')
plt.scatter(x2, y2, s = 0.5, color = 'orange')
plt.fill(np.append(x1, x2[::-1]), np.append(y1, y2[::-1]), 'lightgrey')
plt.show()

enter image description here

答案 1 :(得分:-1)

尝试以下代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0.0, 2, 0.01)
y1 = np.sin(2 * np.pi * x)
y2 = 1.2 * np.sin(4 * np.pi * x)


fig, (ax1) = plt.subplots(1, sharex=True)
ax1.fill_between(x, 0, y1)
ax1.set_ylabel('between y1 and 0')