在Matplotlib中的函数区域下的数据的散点图着色

时间:2018-03-16 04:58:39

标签: python numpy matplotlib

我需要绘制一堆点,并在同一图表上绘制函数cosx。我们的想法是看到曲线下面的点。

我有cosx的图表:

x = np.linspace(0, np.pi) #x range between 0 and pi
y = np.cos(x)
plt.plot(x, y)
plt.show()

现在我需要绘制x = [2, 0.9, 2.6, 3.1]y = [0.1, 0.4, 0.5, 0.2] 我可以将它们绘制成散点图但是我如何将两者结合起来,最好将颜色代码组合成曲线下面的点?

1 个答案:

答案 0 :(得分:4)

您可以将散点分成两个列表,一个用于线下的点,另一个用于线上的点。然后你可以绘制两个列表。

您的数据将被插入而不是points_x和points_y

中的随机数
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, np.pi) #x range between 0 and pi
y = np.cos(x)

N = 100
points_x = np.random.rand(N)*np.pi
points_y = np.random.rand(N)*2.-1.

points_over = [(xi,yi) for xi,yi in zip(points_x,points_y) if np.cos(xi) < yi]
points_under = [(xi,yi) for xi,yi in zip(points_x,points_y) if np.cos(xi) >= yi]

plt.plot(x, y)
plt.scatter(*zip(*points_over),c='g')
plt.scatter(*zip(*points_under),c='r')
plt.show()

制作类似:

的内容

enter image description here