Matplotlib散点图和颜色图的问题

Bea*_*ane 5 python matplotlib legend scatter-plot colormap

我正在一个项目中,该项目涉及将颜色图应用于matplotlib中生成的散点图。我的代码可以按预期工作,除非生成的散点图恰好有四个点。下面的代码对此进行了说明:

import numpy as np
import matplotlib.pyplot as plt

cmap = plt.get_cmap('rainbow_r')

z = np.arange(20)
plt.close()
plt.figure(figsize=[8,6])

for i in range(1,11):
    x = np.arange(i)
    y = np.zeros(i) + i
    plt.scatter(x, y, c=cmap(i / 10), edgecolor='k', label=i, s=200)

plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

此代码生成以下图:

matplotlib图

每行应包含相同颜色的点,但具有四个点的行则不是这种情况。

我认为这与从颜色表中选择的颜色以4个float的元组返回的事实有关,如下所示:

print(cmap(0.4))
>>  (0.69999999999999996, 0.95105651629515364, 0.58778525229247314, 1.0)
Run Code Online (Sandbox Code Playgroud)

假设这是问题的根源,我不知道如何解决。

小智 4

我对你的代码进行了一些研究,基本上你已经解决了这个问题;cmap 值与数据的相似维度导致它们对于“4”情况的解释不同。

这似乎工作正常:

plt.scatter(x, y, c=[cmap(i / 10)], edgecolor='k', label=i, s=200)
Run Code Online (Sandbox Code Playgroud)

(围绕 cmap 的返回值列出构造函数)

固定图表