如何绘制基于区域的颜色编码 python

how to plot region-based color coding python

如何在python中绘制以下内容?我在 2d 中有 1000 点。我需要根据它们在 2d space 中的位置对它们进行颜色编码,如下所示 沿 x 轴移动会增加绿色 沿 y 轴移动增加红色 沿 y=x 线移动,等量增加绿色和红色

所有点的蓝色都相等且为零 这些点代表两个想法(模型)之间的错误。所以每个点都有两个值 point = [p_x, p_y]。 p_x 和 p_y 范围在 0 到 1 之间,如下所示:

points = np.random.rand(1000, 2)
so each point p = [p_x, p_y]

例如,以下代码绘制了一个散点图,其中点的颜色取决于 y 位置。

# Generate data...
x = np.random.random(10)
y = np.random.random(10)

# Plot...
plt.scatter(x, y, c=y, s=100)

plt.show()

如何使每个点的颜色基于 space 中的二维位置,同时取决于 p_xp_y,以便具有更高 p_x 更绿,p_y 更高的点更红

只需根据您的 points 数组计算 RGB 值并使用 matplotlib.pyplot.scattercolor 参数:

import numpy as np
import matplotlib.pyplot as plt 
points = np.random.rand(1000, 2)*180

# calculate Red, Green, Blue channels from 0 to 1 based on min/max of points:
R = (points[:,0] - points[:,0].min())/(points[:,0].max()-points[:,0].min())
G = (points[:,1] - points[:,1].min())/(points[:,1].max()-points[:,1].min())
B=np.zeros(R.shape)

# stack those RGB channels into a N x 3 array:
clrs=np.column_stack((R,G,B)) 

plt.scatter(points[:,0],points[:,1],color=clrs)
plt.show()

结果

编辑:哎呀,看起来我翻转了你想要的 R 和 G 变化的方向,但这应该足以让你继续。