MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by arnold on 28 Apr 2013

Hi,

I have plot containing two area plots:

area(x1,y1); hold on area(x2,y2,'FaceColor','red'); axis auto;

Now I'd like to make the x-axis logarithmic via:

set (gca, 'Xscale', 'log')

This creates logarithmic x-axes, however it deletes the color of the first area plot (leaving just a line plot) and messes up the range. Any suggestions on how to create a semilog area plot with two areas?

Thanks Arnold!

PS: Sorry that the Text Markup doesn't seem to work here either (or only in my view?!)

*No products are associated with this question.*

Answer by Ingo Schalk-Schupp on 4 Sep 2013

The problem is that your x data contains a value of zero, the logarithm of which is undefined. There is no zero on a logarithmic axis. To avoid this, simply start your area, for instance, at an x value of 1 instead of 0:

x1 = 1:1:d;

If you additionally want a logarithmic y axis, the same problem arises because by default, the painted area face goes down to zero. However, you can specify a different BaseValue like this:

area(x2, y2, 'FaceColor', 'red', 'BaseValue', 1e0)

Cheers

## 2 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/73867#comment_145946

Can you create a small example that exhibits the problem? I'm guessing your original plots goes through zero, which may cause the logarithmic axes problems.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/73867#comment_145958

Here you go

It really seems, that the inclusion of the zero in x1 is the problem. Obviously I get why x= zero can't be displayed but since the line plot of y1 is still visible, who would have thought of that. It still seems like a bug to me, but starting at x1(2) is an option.

cheers