MATLAB Answers

hide NaNs in geoshow

조회 수: 24(최근 30일)
Sagar
Sagar 2015년 11월 5일
댓글: Chien-Han Su 2020년 7월 27일
I am plotting some data using geoshow as below: geoshow (yy, xx, data, 'displaytype', 'texturemap'); The 'data' has a lot of NaNs in it and I do not want to show them (or display them as white) in the resulting image, neither in the colorbar (colorbar should not show the white color). The range of data is between 0 and 1.5. I tried using alphadata as below: t = geoshow (yy, xx, data, 'displaytype', 'texturemap'); set(t, 'AlphaData', ~isnan(data)); but I get the error 'value must be numeric'. I looked in the forums and there are not really clean solution to this problem. Could you please provide a nice, clean solution?
Thank you,
-Sagar

답변(2개)

Amy Haskins
Amy Haskins 2015년 11월 10일
Try using 'DisplayType', 'surface' instead of 'texturemap'. Also try looking at the fourth example on the geoshow doc page "Create Map of Korea and Display NaNs as Transparent".
  댓글 수: 4
Chien-Han Su
Chien-Han Su 2020년 7월 27일
I agree with @Darcy Cordell. My application needs me to show my both data and coastlines, but using 'surface' as the 'DisplayType' makes the coastline covered by the data in some portion and therefore imcomplete.
Currently, I fixed this through customizing the colormap (adding one additional color to represent the NaN value). But still, I wonder if there is a better solution ...

댓글을 달려면 로그인하십시오.


Chad Greene
Chad Greene 2015년 11월 6일
Hey Sagar,
Yeah, that set AlphaData trick works for imagesc but not for geoshow. You can try to work around it by converting the logical to numeric like this:
set(t, 'AlphaData',double(~isnan(data)));
But I doubt it will work the way you want it to. I tend to avoid using geoshow because I'm never quite sure how it will behave. It decides which plotting function to call based on what you enter, so why not call the plotting function directly? Can you use pcolor, pcolorm or imagesc?
  댓글 수: 2
Matthew Cooper
Matthew Cooper 2019년 7월 9일
For this to work you need to also set 'FaceAlpha' to 'texturemap' which tells geoshow to map the AlphaData values to the FaceAlpha values.
set(t,'FaceAlpha','texturemap','AlphaData',double(~isnan(data)));

댓글을 달려면 로그인하십시오.

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by