【问题标题】:Convert values in a list to RGB values将列表中的值转换为 RGB 值
【发布时间】:2020-11-09 22:45:19
【问题描述】:

我正在尝试以下方法将列表中的值传达给 [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))

上面返回的是第4维A。我想知道有没有办法只获取RGB值。

【问题讨论】:

    标签: python-3.x matplotlib colors


    【解决方案1】:

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

    mapper.to_rgba 在获取列表或数组作为参数时也可以使用,因此调用mapper.to_rgba(data) 直接获取所有 rgba-tuples 的列表。通过list comprehension,可以创建一个新的 rgb-triples 列表:

    import matplotlib
    from matplotlib import cm
    
    data = range(0, 6)
    norm = matplotlib.colors.Normalize(vmin=min(data), vmax=max(data), clip=True)
    mapper = cm.ScalarMappable(norm=norm, cmap=cm.Greys_r)
    node_color = [(r, g, b) for r, g, b, a in mapper.to_rgba(data)]
    

    PS:上面的代码给出了 0 到 1 之间的 r、g 和 b 值。根据应用程序,可能需要 0 到 255 之间的整数值:

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

    【讨论】:

      猜你喜欢
      • 2012-10-29
      • 2011-01-24
      • 2013-05-10
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      相关资源
      最近更新 更多