Plotting Error bars using minimum and maximum values in Matlab

147 vues (au cours des 30 derniers jours)
Maimuna Mohamud
Maimuna Mohamud le 29 Déc 2019
Hi,
I'm trying to plot an x by y graph. There are several y values for each x value so I want to plot the average of these with error bars. I want each error bar to have the largest value as the upper limit and the smallest value as the lower limit for every point plotted. How do I do this? (I just can't seem to get my head round the help already available on 'errorbar' in matlab)
Thank you in advance.

Réponse acceptée

dpb
dpb le 29 Déc 2019
Modifié(e) : dpb le 29 Déc 2019
Just make a vector of max(y), min(y) the same length as x and add/subtract to the mean for the error bar lengths.
Since both functions are vectorized to accept arrays and return (by default) the result by column, it's just one line each assuming you organize your data by column.
mny=mean(y); % the y means (assumes columns are observations)
ypos=mny+max(y); % for errorbar +ive
yneg=mny-min(y); % for errorbar -ive
errorbar(x,y,yneg,ypos,'x') % plot, no line, 'x' marker
ERRATUM:
Actually, the above isn't quite correct...the error bar lengths are the yneg, ypos arguments; errorbar() itself will take care of the arithmetic. And, to boot, I didn't use the mean() as the y. All in all, 0 for 3. :(
Sorry, my bad.
mny=mean(y); % the y means (assumes columns are observations)
ypos=max(y); % for errorbar +ive
yneg=min(y); % for errorbar -ive
errorbar(x,mny,yneg,ypos,'x') % plot, no line, 'x' marker
If you don't have need otherwise for min/max values, you could just compute and pass inside the errorbar call and dispense with the yneg, ypos temporary variables entirely.
  4 commentaires
Maimuna Mohamud
Maimuna Mohamud le 29 Déc 2019
Oh no worries - thank you again!
dpb
dpb le 30 Déc 2019
You're too kind! :)

Connectez-vous pour commenter.

Plus de réponses (1)

Evangelia Antonopoulou
Evangelia Antonopoulou le 23 Juin 2022
Hi! If I understood the question correctly, you want an error bar with top to be the maximum value of y and bottom to be the minimum value of y. Neither of the above aswers give you that. The 2nd answer will give you an error bar for the top the size of the maximum value, so the top value will be mean+max and not max.
I did the following:
mny=nanmean(y);
ypos=max(y)-mny;
yneg=mny-min(y);
errorbar(mouse,mny,yneg,ypos)
Here, the size of the error bar for the top value (similarly for the bottom) is max(y)-mny which will result to a top value of the error bar to be the actual max.
Hope my answer is clear :)

Catégories

En savoir plus sur Errorbars dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by