从 matplotlib 中的颜色图中获取单个颜色 | 您所在的位置:网站首页 › matplotlibcmap › 从 matplotlib 中的颜色图中获取单个颜色 |
回答问题
如果你有一个Colormapcmap,例如: cmap = matplotlib.cm.get_cmap('Spectral')如何在 0 和 1 之间获得特定颜色,其中 0 是地图中的第一种颜色,而 1 是地图中的最后一种颜色? 理想情况下,我可以通过以下方式获得地图中的中间颜色: >>> do_some_magic(cmap, 0.5) # Return an RGBA tuple (0.1, 0.2, 0.3, 1.0) Answers您可以使用下面的代码执行此操作,并且您问题中的代码实际上非常接近您的需要,您所要做的就是调用您拥有的cmap对象。 import matplotlib cmap = matplotlib.cm.get_cmap('Spectral') rgba = cmap(0.5) print(rgba) # (0.99807766255210428, 0.99923106502084169, 0.74602077638401709, 1.0)对于 [0.0, 1.0] 范围之外的值,它将返回下颜色和上颜色(分别)。默认情况下,这是该范围内的最小和最大颜色(因此为 0.0 和 1.0)。可以使用cmap.set_under()和cmap.set_over()更改此默认值。 对于“特殊”数字,例如np.nan和np.inf,默认使用 0.0 值,这可以使用cmap.set_bad()进行更改,类似于上面的 under 和 over。 最后,您可能需要对数据进行规范化,使其符合 zwz100010 0.0, 1.0]范围。这可以使用 matplotlib.colors.Normalize来完成,如下面的小示例所示,其中参数vmin和vmax分别描述了应该将哪些数字映射到 0.0 和 1.0。 import matplotlib norm = matplotlib.colors.Normalize(vmin=10.0, vmax=20.0) print(norm(15.0)) # 0.5对数归一化器 (matplotlib.colors.LogNorm) 也可用于具有大范围值的数据范围。 (感谢Joe Kington和tcaswell关于如何改进答案的建议。) |
CopyRight 2018-2019 实验室设备网 版权所有 |