How to 'divide' the x-axis based on y-values?
    8 views (last 30 days)
  
       Show older comments
    
Here's a sample equation plot:
x = linspace(0,100);
y = @(x) log(x);
plot(x,y(x),'-','LineWidth',2);
And I am attaching three pictures which represent what I would like to have. I want to 'divide' and 'categorize' the x-axis based on certain ranges of y values. Is there a way I can accomplish one or all three of the tasks outlined in attached picture?
Thank you
Accepted Answer
  Konstantinos Sofos
      
 on 27 Feb 2016
        
      Edited: Konstantinos Sofos
      
 on 28 Feb 2016
  
      Hi,
There are really many and nice ways to take the desire output...here just one quick solution with some patches
x = linspace(0,100);
y = @(x) log(x);
plot(x,y(x),'--','LineWidth',2);
x_lim = get(gca,'xlim')
y_lim = get(gca,'ylim')
hold on
patch([0 0 exp(3.75) exp(3.75)],[y_lim(1) y_lim(2) y_lim(2) y_lim(1) ],[1 0.5 0.2],'FaceAlpha',0.2)
text(mean([0 exp(3.75)]),mean(y_lim),'y < 3.75','rotation',90,'FontSize',14,'HorizontalAlignment','center')
patch([exp(3.75) exp(3.75) exp(4) exp(4)],[y_lim(1) y_lim(2) y_lim(2) y_lim(1) ],[1 1 0.2],'FaceAlpha',0.2)
text(mean([exp(3.75) exp(4)]),mean(y_lim),'3.75 < y < 4.00','rotation',90,'FontSize',14,'HorizontalAlignment','center')
patch([exp(4) exp(4) x_lim(2) x_lim(2)],[y_lim(1) y_lim(2) y_lim(2) y_lim(1) ],[0.5 1 0.7],'FaceAlpha',0.2)
text(mean([exp(4) x_lim(2)]),mean(y_lim),'y > 4.00','rotation',90,'FontSize',14,'HorizontalAlignment','center')
grid minor
ylabel('ln(x)')

More Answers (0)
See Also
Categories
				Find more on Annotations 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!

