Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

logarithmic axis when using area plots?!

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?!)

2 Comments

the cyclist on 28 Apr 2013

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.

arnold on 28 Apr 2013

Here you go

%% Example
d = 30;
x1 = 0:1:d;
y1 = exp(-0.05 * x1);
x2 = d:1:100;
y2 = y1(end)*exp(-0.2*(x2-d));
area(x1,y1);
hold on
area(x2,y2,'FaceColor','red');
hold off
axis auto
set (gca, 'Xscale', 'log');

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

arnold

Products

No products are associated with this question.

1 Answer

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

0 Comments

Ingo Schalk-Schupp

Contact us