Python 3.x 将列表中的值转换为RGB值

Python 3.x 将列表中的值转换为RGB值,python-3.x,matplotlib,colors,Python 3.x,Matplotlib,Colors,我试图用下面的方法将列表中的值转换为[R,G,B]值的列表 data = range(0,6) minima = min(data) maxima = max(data) norm = matplotlib.colors.Normalize(vmin=minima, vmax=maxima, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap=cm.Greys_r) node_color = []

我试图用下面的方法将列表中的值转换为[R,G,B]值的列表

   data = range(0,6)
   minima = min(data)
   maxima = max(data)
   norm = matplotlib.colors.Normalize(vmin=minima, vmax=maxima, clip=True)
   mapper = cm.ScalarMappable(norm=norm, cmap=cm.Greys_r)
   node_color = []
   for d in data:
        node_color.append(mapper.to_rgba(d))
上面返回的是第四维a。我想知道是否有办法只获取RGB值。

mapper。to_rgba(d)
返回一个元组,其形式为
(r,g,b,a)
。您可以直接将结果分配给4元组,如
r,g,b,a=mapper.to_rgba(d)
。然后创建一个三元组作为
(r,g,b)
存储在列表中

当它获取一个列表或数组作为参数时也会起作用,因此调用
mapper.to_rgba(data)
直接获取所有rgba元组的列表。通过a,可以创建rgb三元组的新列表:

导入matplotlib
从matplotlib导入cm
数据=范围(0,6)
norm=matplotlib.colors.Normalize(vmin=min(数据),vmax=max(数据),clip=True)
映射器=cm.scalarMapable(norm=norm,cmap=cm.Greys\r)
node_color=[(r,g,b)表示映射器中的r,g,b,a到_rgba(数据)]
PS:上述代码给出的r、g和b值介于0和1之间。根据应用程序的不同,可能需要0到255之间的整数值:

node_color = [(r, g, b) for r, g, b, a in mapper.to_rgba(data, bytes=True)]