plotting with pcolor instead of imagesc but with a similar coloring algorithm

53 views (last 30 days)
I am trying to plot a dataset with variable y-axis values. I used pcolor to make this plot:
As you can see it interpolated colors at some regions that there is no data (i.e. around 7:00 and 15:00).
Is there any way to fix this in pcolor or surf functions and somehow get them to color the pixels in a similar way as imagesc (based on center values not corners)?
I can't use image or imagesc functions because I need logarithmic y axis and when I use those plotting routines I get the error that is discussed here.

Answers (1)

Shruti Shivaramakrishnan
Shruti Shivaramakrishnan on 31 Jul 2017
There are functions available in MATLAB which can perform 1-D, 2-D, or 3-D data interpolation. The function names are 'interp1', 'interp2' and 'interp3'. Depending on how many variables you have, you can try using the corresponding function to interpolate your data before using 'pcolor' to create the pseudocolor plot.
It may be a good idea to check out the section titled 'Interpolation' in the doc page below:
If you are looking at smoothing the graph, the following answer's post might help: https://www.mathworks.com/matlabcentral/answers/86013-pcolor-how-to-smooth
"shading interp" command might be helpful here as well: https://www.mathworks.com/help/matlab/ref/shading.html
This third-party file-exchange function might also be helpful: https://www.mathworks.com/matlabcentral/fileexchange/35601-sanepcolor-varargin-
There is a MATLAB Example that can help with offset data: https://www.mathworks.com/examples/matlab/community/20093-offsets-and-discarded-data-via-pcolor-and-surf

Community Treasure Hunt

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

Start Hunting!