Waleed Esmail
Waleed Esmail

Reputation: 87

Plot error bar in matplotlib on both axes

I want to plot 2D data points with errors on each axis in python. I have used errorbar from matplotlib:

x=[393.995,394.87,422.965,423.84,437.49,438.360,466.965,467.84]
y=[1.2625,0.7575,1.2625,0.7575,1.2625,1.7675,2.2725,2.7775]
errors=[0.486731,0.00955756,0.111786,0.412761,0.240057,0.228817,0.222496  ,0.24288]
errorbar(x, y, xerr=errors, yerr=errors, ecolor='k', fmt='o', capthick=2)

But it shows only errors on y-axis. I have no idea why.

The plot:

The plot

Upvotes: 0

Views: 2779

Answers (1)

CAPSLOCK
CAPSLOCK

Reputation: 6483

There is nothing wrong with your code. The problem is the relative value of the errors and the x data. You are simply not able to see the bars. To understand the issue look at the following two examples:

Invert the x and y coordinates:

x=[393.995,394.87,422.965,423.84,437.49,438.360,466.965,467.84]
y=[1.2625,0.7575,1.2625,0.7575,1.2625,1.7675,2.2725,2.7775]
errors=[0.486731,0.00955756,0.111786,0.412761,0.240057,0.228817,0.222496  ,0.24288]
errorbar(y, x, xerr=errors, yerr=errors, ecolor='k', fmt='o', capthick=2) #invert x and y

enter image description here

Reduce the value of your x.

x=[3.93995,3.9487,4.22965,4.2384,4.3749,4.38360,4.66965,4.6784] #x=x/100
y=[1.2625,0.7575,1.2625,0.7575,1.2625,1.7675,2.2725,2.7775]
errors=[0.486731,0.00955756,0.111786,0.412761,0.240057,0.228817,0.222496  ,0.24288]
plt.errorbar(x,y, xerr=errors, yerr=errors, ecolor='k', fmt='o', capthick=2)

enter image description here

Upvotes: 1

Related Questions