Python Mathplotlib基于对象id设置打印颜色

Python Mathplotlib基于对象id设置打印颜色,python,matplotlib,rgb,Python,Matplotlib,Rgb,我有一些python对象,其中包含一些数据,它们都有一个id(1,2,3,4,5…..n)。我有一个python函数,其中我发送了其中一个对象,我想从中绘制数据,并根据id绘制不同的颜色。我尝试做了一些我从其他问题中看到的事情,比如尝试将id整数转换为RGB值,如下所示: Blue = integer & 255 Green = (integer >> 8) & 255 Red = (integer >> 16) & 255 return

我有一些python对象,其中包含一些数据,它们都有一个id(1,2,3,4,5…..n)。我有一个python函数,其中我发送了其中一个对象,我想从中绘制数据,并根据id绘制不同的颜色。我尝试做了一些我从其他问题中看到的事情,比如尝试将id整数转换为RGB值,如下所示:

Blue =  integer & 255
Green = (integer >> 8) & 255
Red =   (integer >> 16) & 255

return (RED/255, Green/255, Blue/255)  # to get them into [0,1] interval
def rgb_function(object_id):
    
    random.seed(object_id)
    value = random.uniform(0,1)
    #then calculate RGB value based on this answer: https://stackoverflow.com/questions/55178857/convert-a-floating-point-number-to-rgb-vector
     H = value;
     R = abs(H * 6 - 3) - 1;
     G = 2 - abs(H * 6 - 2);
     B = 2 - abs(H * 6 - 4);  
     return max(0, min(1, R)), max(0, min(1, G)), max(0, min(1, B))

     
但问题是,在接近的数字之间,颜色将是相同的,如1,2,3(Basicali将具有几乎相同的颜色)。有办法吗

编辑:

所以我想做这样的事情:

Blue =  integer & 255
Green = (integer >> 8) & 255
Red =   (integer >> 16) & 255

return (RED/255, Green/255, Blue/255)  # to get them into [0,1] interval
def rgb_function(object_id):
    
    random.seed(object_id)
    value = random.uniform(0,1)
    #then calculate RGB value based on this answer: https://stackoverflow.com/questions/55178857/convert-a-floating-point-number-to-rgb-vector
     H = value;
     R = abs(H * 6 - 3) - 1;
     G = 2 - abs(H * 6 - 2);
     B = 2 - abs(H * 6 - 4);  
     return max(0, min(1, R)), max(0, min(1, G)), max(0, min(1, B))

     

您可能只需将颜色贴图与各种颜色混洗即可,从而使其随机化

随机导入
将matplotlib.pyplot作为plt导入
将numpy作为np导入
颜色=[plt.cm.hsv(i)表示np.linspace(0,1600)中的i]
#random.seed(77)#如果您每次都想要相同的颜色,请取消对此的注释
随机。随机(颜色)
图,ax=plt.子批次()
ax.绘图(范围(20),范围(20),颜色[:20]
#这将为相似的ID提供不同的颜色

如果你想要真正的随机颜色,你应该看看答案。但这可能是过分了。

n有多大?这取决于根据一些标准将创建多少对象,我想平均大约600个,但这有点像动态。为了回答krm,我做了一些不同的事情,在[0,1]之间生成了一个随机浮点数然后计算RGB值(请参见我的编辑),你认为这样做正确吗?你的更改LGTM。这肯定会生成不同的颜色。是的,我想我会遇到的另一个问题是,有时生成的颜色太亮,例如,生成了一个亮黄色,当我用该颜色绘制点时,它们有点难以看到。不管怎样降低亮度?