【问题标题】:Is there a way to convert numbers to colours有没有办法将数字转换为颜色
【发布时间】:2020-05-20 08:43:52
【问题描述】:

我正在做一个射电天文学项目,我必须从输入测量辐射将数据馈送到我的电脑。当指向一个大的辐射源(如太阳)时,输入将接收到一个较高的值,而当不是指向一个较大的辐射源时,该值将接收到较低的值。值范围从 0 到 9。

示例输入如下所示:

1221211
1332331
1489841
1699971
1489841
1332331
1221211

包含较高值的数组中间应该映射到较亮的像素,而较低的值应该对应地映射到较暗的像素。

可以使用任何 python 库读取这些数字,并将其替换为具有相应数字值的像素。

【问题讨论】:

    标签: python numpy matplotlib colors


    【解决方案1】:

    您可以为此使用 matplotlib 中的 colourmaps - 这是您的数据示例:

    代码:

    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    
    inpt = np.array([[1, 2, 2, 1, 2, 1, 1],
                     [1, 3, 3, 2, 3, 3, 1],
                     [1, 4, 8, 9, 8, 4, 1],
                     [1, 6, 9, 9, 9, 7, 1],
                     [1, 4, 8, 9, 8, 4, 1],
                     [1, 3, 3, 2, 3, 3, 1],
                     [1, 2, 2, 1, 2, 1, 1]])
    
    norm = mpl.colors.Normalize(vmin=0, vmax=9)
    plt.imshow(inpt, cmap='hot', norm=norm)
    

    输出:

    要获取 RGBA 值的元组,只需使用,例如:

    >>> cmap = plt.cm.hot
    >>> cmap(norm(5))
    (0.0, 0.7110320290467349, 1.0, 1.0)
    >>> mpl.colors.rgb2hex(cmap(norm(5))) # Hex Code
    '#ff8000'
    

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 2010-10-04
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多