Contourf: fill inside instead of outside
    11 views (last 30 days)
  
       Show older comments
    
Hi, how can I fill the area within the circle? At the moment Matlab fills the area outside. I would like the outside to be white and the inside to be filled. Thanks.
relamdt=-4:0.1:4;
imlamdt=-4:0.1:4;
[x,y]=meshgrid(relamdt,imlamdt);
axis square;
lamdt=x+i*y;
sig = (1 + lamdt);
v = [1,1];
contourf(x,y,abs(sig),v)

0 Comments
Accepted Answer
  Walter Roberson
      
      
 on 8 Apr 2019
        
      Edited: Walter Roberson
      
      
 on 8 Apr 2019
  
      contourf(x, y, -abs(sig), -v)
Alternately, possibly
[~,h] = contourf(x, y, abs(sig), v);
drawnow();     %seems to be needed to get NodeChildren created
bg = h.NodeChildren(2).ColorData;
h.NodeChildren(2).ColorData = uint8([255; 255; 255; 255]);
ax = ancestor(h,'axes');
ax.Color = bg;
0 Comments
More Answers (2)
  David Wilson
      
 on 8 Apr 2019
        A quick hack (following the essence of your code) is
cmap = colormap; cmap(end,:) = [1,1,1]; colormap(cmap); 
contourf(x,y,abs(sig),[0,1]);
axis square
  Roberto Tumolo
      
 on 26 Jul 2024
        What if one wants to extract the values shown inside and outside (suppose you don't know them because they come from a contour? 
1 Comment
  DGM
      
      
 on 26 Jul 2024
				The way the question is posed makes it unclear what information we might have.  From a contour()/contourf() object, we can know a set of discrete z-values associated with the given level curves, but unless we have access to the original zdata, we don't know the actual values between the level curves. If we don't have access to the object itself (e.g. if all we have is a saved figure as a raster image (a screenshot)), then things get more restricted.
See Also
Categories
				Find more on Contour Plots in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



