如何使用MATLAB中的imagesc函数使NaN和零点透明?

时间:2018-06-25 21:50:45

标签: image matlab maps transparency

我有一个矩阵hist2,其中包含很多NaN和零值。我在地图上显示了它的值。但是,我的问题是NaN和零会变成深蓝色,我希望它们根本没有颜色,完全透明。

我尝试了不同的事情:

  1. imAlpha = ones(size(hist2));
    imAlpha(isnan(hist2)) = 0;
    im = imagesc(hist2,'AlphaData',imAlpha);
    set(gca,'color',[1 1 1]);
    
  2. im.AlphaDataMapping = 'none';
    im.FaceAlpha = 'texturemap';
    alpha(im,double(~isnan(hist2)));
    

不幸的是,这些都不起作用。我没有其他想法。

以下代码输出是下面的地图:

ax = worldmap([0 45],[-110 -30])
land = shaperead('landareas.shp', 'UseGeoCoords', true);
geoshow(land, 'FaceColor', [0.15 0.5 0.15])
xgrid = minx:gridres:maxx;
ygrid = miny:gridres:maxy;
im = imagesc(xgrid,ygrid,hist2/(gridres^2),'AlphaData',imAlpha);
colorbar
uistack(im,'bottom')
hold on 
xlabel('Longitude (E)')
ylabel('Latitude (N)')
drawnow

output

后来,我成功地将蓝色区域变成了白色-但它仍然不是透明的。我希望深蓝色区域没有颜色。

0 个答案:

没有答案