Python 如何为列表中的每个x、y点数组着色

Python 如何为列表中的每个x、y点数组着色,python,matplotlib,Python,Matplotlib,我有休闲问题: 我有一个带有x,y点的数组列表,例如,形状为(400,2)的100个数组(或者只是形状数组(100,400,2)),其中最后一个维度对应于x,y坐标。我想用不同于渐变色的颜色为每个阵列上色,如下图所示: 所以对应于0,1,2的点。。。10种颜色从紫色到蓝色,从10到100种颜色从绿色到黄色等等 我尝试了以下代码: import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib as mpl

我有休闲问题:

我有一个带有x,y点的数组列表,例如,形状为(400,2)的100个数组(或者只是形状数组
(100,400,2)
),其中最后一个维度对应于x,y坐标。我想用不同于渐变色的颜色为每个阵列上色,如下图所示:

所以对应于0,1,2的点。。。10种颜色从紫色到蓝色,从10到100种颜色从绿色到黄色等等

我尝试了以下代码:

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import matplotlib as mpl
import numpy as np

N = 100
my_cord = np.stack([np.random.randn(400, 2) + np.random.randn(1, 2)*10 for j in range(N)])
fig, ax = plt.subplots()
cmap = plt.get_cmap('spring', N)
for i in range(N):
    x, y = my_cord[i].T
    cf = ax.scatter(x, y, cmap=cmap(i))

norm = mpl.colors.Normalize(vmin=0,vmax=N)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
plt.colorbar(sm)


ax.set_xlabel('IC 1')
ax.set_ylabel('IC 2')
fig.tight_layout()
plt.show()
但我得到的散点图颜色与cmap中定义的不同:


如果要在此处设置离散颜色,需要修改以下内容

cmap = plt.get_cmap('spring', N)
for i in range(N):
    x, y = my_cord[i].T
    cf = ax.scatter(x, y, color=cmap(i))

由于颜色条是对数的,所以使用
LogNorm是有意义的。点的大小可以缩小。对于非常小的点,应删除轮廓(例如设置
ec='none'

导入matplotlib.pyplot作为plt
将matplotlib导入为mpl
将numpy作为np导入
N=100
my_cord=np.stack([np.random.randn(400,2)+np.random.randn(1,2)*10表示范围(N)内的j)])
图,ax=plt.子批次()
cmap=plt.get_cmap('spring',N)
norm=mpl.colors.LogNorm(vmin=1,vmax=N+1)
对于范围(N)中的i:
cf=ax.scatter(我的线[i,:,0],我的线[i,:,1],颜色=cmap(范数(i+1)),ec='none',marker='1','s=1)
sm=plt.cm.ScalarMappable(cmap=cmap,norm=norm)
打印颜色条(sm)
ax.集合标签('IC 1')
ax.set_ylabel('IC 2')
图1紧_布局图()
plt.show()

PS:通过使用索引作为
c=
并直接传递
cmap
,也可以一次性创建绘图:

norm=mpl.colors.LogNorm(vmin=1,vmax=N+1)
cf=ax.scatter(我的线[,:,0],我的线[,:,1],
c=np.repeat(np.arange(1,N+1),my_cord.shape[1]),
cmap='spring',ec='none',marker='1','s=1)
打印颜色条(cf)

设置颜色的alpha/透明度值。@KonradRudolph但是,点会“褪色”或者你的意思是什么?
cf=ax.scatter(x,y,color=cmap(i))
这不是正确的设置吗?@r-初学者谢谢,它能工作!你能把它作为一个答案吗?@DanielWiczew褪色是关键,是的。看看原始图:颜色向边缘逐渐消失,你只能得到许多点部分重叠的纯色。我不认为原始情节中的所有颜色都有alpha成分:紫色点足够稀疏,也许其他颜色也是实心的;但黑色绝对(非常)透明。