How to 'divide' the x-axis based on y-values?

3 views (last 30 days)
A on 27 Feb 2016
Edited: Konstantinos Sofos on 28 Feb 2016
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
Azzi Abdelmalek on 27 Feb 2016
no attached picture
A on 27 Feb 2016
Fixed.

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)')
A on 27 Feb 2016
This is amazing. I am definitely going to try this out.
Is there any other way you can think of?
Thanks so much!