1
votes

I have a 2D array data and I plot it using surf. In the surface plot, there is a region in which the elements in data are greater than 0.9*max(max(data)). I want to 'outline' the region. How can I do that?

If I type

data_copy = data;
data_copy(data<0.9) = nan;

Then if I use scatter plot together with the original surface plot to plot the coordinates of data_copy that are not nan, I can 'shade' the region. But I just want the 'boundary' of the region. How to do that?

1

1 Answers

0
votes

I am not sure, that this is exactly what you want, but you can try the following: consider a simple example - f(x,y)=sin(2 pi x). You can remove edges from your plot (if you have a lot of data, it looks messy). Then, you can explicitly set the colors: draw the region of interest with one color, and all the other data with other:

data=repmat(sin(2*pi*(0:0.01:1)),numel(0:0.01:1),1); %define data
s=surf(data) % plot
s.EdgeAlpha=0; % remove edges
s.CData(data>=0.9*max(max(data)))=0; %set the color for the region of interest
s.CData(data<0.9*max(max(data)))=1; %set different color for all other data

Now it is clear, where your boundary is.