说我有三组数据x,y和z。 我想绘制x和y的散点图,但是我想根据它们对应的z值将颜色分配给不同的点。
例如,对于z在0到1范围内的每个点,我希望数据点为红色,当z在1到3范围内时,我希望数据点为蓝色,等等。
我该怎么做?
答案 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()