Start plot errorbar() at 0 ?

2 Ansichten (letzte 30 Tage)
Remi Chaussenot
Remi Chaussenot am 27 Apr. 2015
Bearbeitet: Remi Chaussenot am 28 Apr. 2015
Hello,
In my matlab script, i use errorbar() to plot my data, but i wish it could start from 0 (for the y-axis).
Do you have an idea ?
Thanks !
Here is my sample :
>> x
moyenne(2:2,1:end)
ste(1:1,1:end)
x =
1 2
ans =
64.7573 36.0701
ans =
4.0268 4.6105
>> errorbar(x,moyenne(2:2,1:end),ste(1:1,1:end));

Akzeptierte Antwort

Jos (10584)
Jos (10584) am 27 Apr. 2015
You can change limits of the axis using the commands YLIM
CurYLim = ylim % get the current Y limits
ylim([0 CurYlim(2)]) % change the lower limit

Weitere Antworten (1)

Remi Chaussenot
Remi Chaussenot am 27 Apr. 2015
Thanks for your quick answer.
In the mean time, i ended with :
oldy = get(gca, 'ylim')
if oldy(1) > '0'
oldy = [0 oldy(2)]
end
set(gca,'YLim',[0 oldy(2)])
Which one is better ?
Thanks :)
  2 Kommentare
Michael Haderlein
Michael Haderlein am 27 Apr. 2015
First, please note that the '' in your if statement are making things wrong. You actually compare the lower limit with the string '0'. This means, the value of the ascii sign '0' will be used which is 48. So you set oldy(1) to zero only if it was at least 49 before. That's not what you wanted, I guess.
However, your code works because the if structure makes nothing at all. The reason is that you don't even use the value of oldy(1) in your set statement. So you can simply delete the entire if statement. What you then end up with is basically the same as Jos' answer. If you use ylim() or set(handle,'ylim',..) is up to you.
Remi Chaussenot
Remi Chaussenot am 28 Apr. 2015
Bearbeitet: Remi Chaussenot am 28 Apr. 2015
Hello,
I had some difficulties to understand your message yesterday, so i reply just today.
"You actually compare the lower limit with the string '0'. This means, the value of the ascii sign '0' will be used which is 48. So you set oldy(1) to zero only if it was at least 49 before. That's not what you wanted, I guess."
No, you guess well. I do not know that it use the ascii value with ' ' (well, started with MATLAB a few weeks ago, more used at PHP/JS...).
"The reason is that you don't even use the value of oldy(1) in your set statement. So you can simply delete the entire if statement."
Damned, i just read my code today. Yeah, the if statement is truly useless, because the set is outside ! Was very tired yesterday..
Thanks for opening my eyes Michael :)
Edited like that :
CurYLim = ylim
if CurYLim(1) > 0
ylim([0 CurYLim(2)])
end
Seems okay ? Thanks Michael and Jos :-)

Melden Sie sich an, um zu kommentieren.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by