不要在2D热图上显示零值

xpl*_*now 5 python matplotlib

我想绘制一个sillicon晶圆模具的2D地图.因此,只有中心部分有值,角落的值为0.我正在使用matplotlib的plt.imshow来获得一个简单的地图,如下所示:

data = np.array([[ 0. ,  0. ,  1. ,  1. ,  0. ,  0. ],
       [ 0. ,  1. ,  1. ,  1. ,  1. ,  0. ],
       [ 1. ,  2. ,  0.1,  2. ,  2. ,  1. ],
       [ 1. ,  2. ,  2. ,  0.1,  2. ,  1. ],
       [ 0. ,  1. ,  1. ,  1. ,  1. ,  0. ],
       [ 0. ,  0. ,  1. ,  1. ,  0. ,  0. ]])

plt.figure(1)
plt.imshow(data ,interpolation='none')
plt.colorbar()
Run Code Online (Sandbox Code Playgroud)

我得到以下地图: 在此输入图像描述

有没有办法去除值为零的深蓝色区域,同时保留"晶圆"的形状(绿色,红色和浅蓝色区域)?意味着角落将是空白,而其余角落保留颜色配置.

或者是否有更好的功能可以用来获得它?

Vla*_*lov 7

有两种方法可以消除深蓝色的角落:

您可以将数据标记为零值:

data[data == 0] = np.nan
plt.imshow(data, interpolation = 'none', vmin = 0)
Run Code Online (Sandbox Code Playgroud)

或者,您可以为创建一个掩码数组imshow

data_masked = np.ma.masked_where(data == 0, data)
plt.imshow(data_masked, interpolation = 'none', vmin = 0)
Run Code Online (Sandbox Code Playgroud)

上面的两个解决方案都可以解决您的问题,尽管使用遮罩要更普遍一些。

如果要保留确切的颜色配置,则需要手动设置vmin/ vmax参数以绘制图像。传递vmin = 0plt.imshow上面可确保丢弃的零仍然出现在颜色栏上。 蒙面的imshow