繁体   English   中英

在 Matplotlib imshow 中为特定值设置颜色

[英]Setting color for specific value in Matplotlib imshow

假设我正在使用imshow在一个简单的 matplotlib 热图上绘制以下 numpy 数据数组; 在某些情况下,该值为0.0 有没有办法为将显示该值的单元格设置特定颜色? 例如,当值为 0 时,该单元格的颜色必须为黑色

a = np.array([[0.8, 2.4, 2.5, 3.9, 0.0, 4.0, 0.0],
              [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
              [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
              [0.6, 0.0, 0.3, 0.0, 0, 0.0, 0.0],
              [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
              [0, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
              [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])   

Map = ax.imshow(a, interpolation='none', cmap='coolwarm')

也许不是完美的解决方案,但绝对是一个简单的解决方案。 如果只是为了创建图像,您可以修改原始数据(或其副本)并将0.0替换为NaN 然后您可以使用set_bad获得所需的输出。

import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

a = np.array([[0.8, 2.4, -2.5, 3.9, 0.0, 4.0, 0.0],
              [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
              [-1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
              [0.6, 0.0, 0.3, 0.0, 0, 0.0, 0.0],
              [0.7, 1.7, -0.6, 2.6, 2.2, 6.2, 0.0],
              [0, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
              [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])   

c_map = cm.get_cmap('rainbow')
c_map.set_bad('k')
b = a.copy()
b[b==0] = np.nan
fig = plt.imshow(b, interpolation='none', cmap=c_map)
plt.colorbar(fig)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM