logarithmic axis when using area plots?!

16 Ansichten (letzte 30 Tage)
arnold
arnold am 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 Kommentare
the cyclist
the cyclist am 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
arnold am 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Ingo Schalk-Schupp
Ingo Schalk-Schupp am 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

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Object Properties finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by