如何在python中为不同范围的数据点分配颜色

时间:2018-10-26 21:05:52

标签: python matplotlib

说我有三组数据x,y和z。 我想绘制x和y的散点图,但是我想根据它们对应的z值将颜色分配给不同的点。

例如,对于z在0到1范围内的每个点,我希望数据点为红色,当z在1到3范围内时,我希望数据点为蓝色,等等。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

尝试一下。通过ImportanceOfBeingErnest答案here

import matplotlib.pyplot as plt
import matplotlib.colors
import numpy as np

x = np.linspace(0, 10, 100)
y = np.random.randint(0, 50, size=100)
z = np.random.rand(100)*10

bounds = [0,1,3,10]
colors = ["r", "b", "g"]

plt.figure(figsize=(8,6))

cmap = matplotlib.colors.ListedColormap(colors)
norm = matplotlib.colors.BoundaryNorm(bounds, len(colors))

rect = plt.scatter(x, y, s = 100, c=z, cmap=cmap, norm=norm)

cbar = plt.colorbar(rect, spacing="proportional")
cbar.set_label('Color', rotation=270, labelpad=10)

for i, txt in enumerate(z):
    plt.annotate(np.around(txt, 1), (x[i], y[i]))
plt.show()

enter image description here