首页 > 解决方案 > 如何将 matplotlib 颜色条标准化为 0 到 1 之间的标量数组?

问题描述

我有一个使用 matplotlib 生成的颜色条的 .jpg 图像:

彩条

我想为刻度线性分配一个浮点数,使其范围从 0 到 1。也就是说,最左边的颜色(紫色)表示接近零的值,最右边的(红色)表示接近一的值。

我最初的想法是在 python 中使用 PIL 转换为灰度,然后规范化该数组。我使用的代码是:

from PIL import Image

bar = Image.open('colorbar.png')
bar_gs = bar.convert(mode='L')
gs_values = np.zeros(bar_gs.size[1])

for i in range(0, bar_gs.size[1]):
    gs_values[i] = pix_gs[00,i]

这将创建颜色条的灰度版本,如下所示:

灰度彩条

绘制单行给出:

阴谋

急剧下降显然是刻度线。真正的问题是,这不是我希望的单调递增/递减函数。对于给定的 x 值,我需要有一个 y 轴值。因为第三个情节中有多个驼峰,事实并非如此。

所以看起来我实际上是通过转换为灰度来丢失信息。我的最终目标是能够为某些颜色分配 0 到 1 之间的值。有没有更好的方法来解决这个问题?

谢谢

标签: pythonmatplotlibpython-imaging-library

解决方案


推荐阅读