我有数字列表,并且想从 python 中的 ylorbr
颜色图中为每个数字分配一种颜色。
如果我对颜色图的直觉是正确的,它只是一系列颜色 - 因此,ylorbr
从黄色到橙色再到棕色。
我只想从此颜色图中获取 n
个等距颜色元组,从 0
开始(在本例中为黄色)。
这是我尝试过的简单代码:
from matplotlib import cm
import numpy as np
ylorbr = cm.get_cmap('YlOrBr', 8)
x = ylorbr(np.arange(0,1,0.1))
print(x)
当我尝试此操作时,x
不是一组均匀间隔的颜色 - 事实上,颜色是重复的。我也找不到其他解决方案 - 或者可能有,但我是绘图新手。
我是绘图新手,但对 python 并不陌生。为什么从给定的颜色图中获取均匀分布的 RGB 简单列表很困难,有什么原因吗?我使用“python sense”进行上述测试,实际上期望的是均匀间隔的 RGB 元组列表。
有人可以告诉我色彩映射表在 python 中是如何工作的,以及如何以尽可能最短的方式简单地将 n
个排序整数分配给色彩映射表中的 n
个颜色吗?
编辑:我在这里假设颜色图是离散的颜色列表。我只想要第一个项目、最后一个项目以及位于该颜色列表的 1/n 处的每个项目。
Edit2:根据下面 Mark 的评论,我尝试在 get_cmap
之后使用 .colors
属性访问 map 的颜色列表。但是,虽然它在颜色映射为 viridis
时有效,但当我将其设置为 YlOrBr
时它不起作用,并且出现错误:'LinearSegmentedColormap' 对象没有属性'颜色'
最佳答案
您要求它制作一个包含 8 个条目的色彩图。当您请求 10 个结果时,得到重复结果并不奇怪。
我能听到你从这里尖叫“arrgggh”。
关于python - 从颜色图中获取 "n"数字的 "n"等间距 RGB 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66556156/