Discussion:
[Matplotlib-users] Problem with errorbar and log axis
Markus Haider
2015-04-07 14:11:20 UTC
Permalink
Hi,

I am trying to make an errorbar plot with a logarithmic x-axis. I have
symmetric errors in logspace, however if I plot them, the errors are not
symmetric anymore, as you can see in the enclosed image. Am I
misunderstanding something or is this a bug?

Thanks for your help,
Markus

Here the code I used to produce the plot:

import matplotlib.pyplot as plt

import numpy as np

data_x_log = np.array([13.0,15.0])

data_y = np.array([0.5,1])

error_x_log = np.array([0.5,1.])

error_x_lower = 10**(data_x_log-error_x_log)

error_x_upper = 10**(data_x_log+error_x_log)

fig = plt.figure()

ax = fig.add_subplot(111)

ax.errorbar(10**data_x_log,data_y,xerr=[error_x_lower,error_x_upper],ls='',marker='o')

ax.set_xscale('log')

ax.set_xlim([1E11,1E17])

ax.set_ylim([0,2])

plt.savefig('error.png')
Yuxiang Wang
2015-04-07 14:39:11 UTC
Permalink
If you error bars denote standard deviation of standard error of mean,
shouldn't they be non-symmetric in log scale?

Shawn
Post by Markus Haider
Hi,
I am trying to make an errorbar plot with a logarithmic x-axis. I have
symmetric errors in logspace, however if I plot them, the errors are not
symmetric anymore, as you can see in the enclosed image. Am I
misunderstanding something or is this a bug?
Thanks for your help,
Markus
import matplotlib.pyplot as plt
import numpy as np
data_x_log = np.array([13.0,15.0])
data_y = np.array([0.5,1])
error_x_log = np.array([0.5,1.])
error_x_lower = 10**(data_x_log-error_x_log)
error_x_upper = 10**(data_x_log+error_x_log)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.errorbar(10**data_x_log,data_y,xerr=[error_x_lower,error_x_upper],ls='',marker='o')
ax.set_xscale('log')
ax.set_xlim([1E11,1E17])
ax.set_ylim([0,2])
plt.savefig('error.png')
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Yuxiang "Shawn" Wang
Gerling Research Lab
University of Virginia
***@virginia.edu
+1 (434) 284-0836
https://sites.google.com/a/virginia.edu/yw5aj/
Yuxiang Wang
2015-04-07 14:40:01 UTC
Permalink
Typo - "standard deviation OR standard error of mean", not "OF".

Sorry.

Shawn
Post by Yuxiang Wang
If you error bars denote standard deviation of standard error of mean,
shouldn't they be non-symmetric in log scale?
Shawn
Post by Markus Haider
Hi,
I am trying to make an errorbar plot with a logarithmic x-axis. I have
symmetric errors in logspace, however if I plot them, the errors are not
symmetric anymore, as you can see in the enclosed image. Am I
misunderstanding something or is this a bug?
Thanks for your help,
Markus
import matplotlib.pyplot as plt
import numpy as np
data_x_log = np.array([13.0,15.0])
data_y = np.array([0.5,1])
error_x_log = np.array([0.5,1.])
error_x_lower = 10**(data_x_log-error_x_log)
error_x_upper = 10**(data_x_log+error_x_log)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.errorbar(10**data_x_log,data_y,xerr=[error_x_lower,error_x_upper],ls='',marker='o')
ax.set_xscale('log')
ax.set_xlim([1E11,1E17])
ax.set_ylim([0,2])
plt.savefig('error.png')
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Yuxiang "Shawn" Wang
Gerling Research Lab
University of Virginia
+1 (434) 284-0836
https://sites.google.com/a/virginia.edu/yw5aj/
--
Yuxiang "Shawn" Wang
Gerling Research Lab
University of Virginia
***@virginia.edu
+1 (434) 284-0836
https://sites.google.com/a/virginia.edu/yw5aj/
Markus Haider
2015-04-07 20:51:05 UTC
Permalink
I have the error from a table which is in log units, and the error is
given to be symmetric in log space.

Cheers,
Markus
Post by Yuxiang Wang
Typo - "standard deviation OR standard error of mean", not "OF".
Sorry.
Shawn
Post by Yuxiang Wang
If you error bars denote standard deviation of standard error of mean,
shouldn't they be non-symmetric in log scale?
Shawn
Post by Markus Haider
Hi,
I am trying to make an errorbar plot with a logarithmic x-axis. I have
symmetric errors in logspace, however if I plot them, the errors are not
symmetric anymore, as you can see in the enclosed image. Am I
misunderstanding something or is this a bug?
Thanks for your help,
Markus
import matplotlib.pyplot as plt
import numpy as np
data_x_log = np.array([13.0,15.0])
data_y = np.array([0.5,1])
error_x_log = np.array([0.5,1.])
error_x_lower = 10**(data_x_log-error_x_log)
error_x_upper = 10**(data_x_log+error_x_log)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.errorbar(10**data_x_log,data_y,xerr=[error_x_lower,error_x_upper],ls='',marker='o')
ax.set_xscale('log')
ax.set_xlim([1E11,1E17])
ax.set_ylim([0,2])
plt.savefig('error.png')
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Yuxiang "Shawn" Wang
Gerling Research Lab
University of Virginia
+1 (434) 284-0836
https://sites.google.com/a/virginia.edu/yw5aj/
Jody Klymak
2015-04-07 21:33:31 UTC
Permalink
xerr is +/- relative to the data:

*xerr*/*yerr*: [ scalar | N, Nx1, or 2xN array-like ]
If a scalar number, len(N) array-like object, or an Nx1
array-like object, errorbars are drawn at +/-value relative
to the data.

If a sequence of shape 2xN, errorbars are drawn at -row1
and +row2 relative to the data.

I think you want:

xdat=10**data_x_log
ax.errorbar(10**data_x_log,data_y,xerr=[xdat-error_x_lower,error_x_upper-xdat],ls='',marker='o')

Cheers, Jody
Post by Markus Haider
I have the error from a table which is in log units, and the error is
given to be symmetric in log space.
Cheers,
Markus
Post by Yuxiang Wang
Typo - "standard deviation OR standard error of mean", not "OF".
Sorry.
Shawn
Post by Yuxiang Wang
If you error bars denote standard deviation of standard error of mean,
shouldn't they be non-symmetric in log scale?
Shawn
Post by Markus Haider
Hi,
I am trying to make an errorbar plot with a logarithmic x-axis. I have
symmetric errors in logspace, however if I plot them, the errors are not
symmetric anymore, as you can see in the enclosed image. Am I
misunderstanding something or is this a bug?
Thanks for your help,
Markus
import matplotlib.pyplot as plt
import numpy as np
data_x_log = np.array([13.0,15.0])
data_y = np.array([0.5,1])
error_x_log = np.array([0.5,1.])
error_x_lower = 10**(data_x_log-error_x_log)
error_x_upper = 10**(data_x_log+error_x_log)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.errorbar(10**data_x_log,data_y,xerr=[error_x_lower,error_x_upper],ls='',marker='o')
ax.set_xscale('log')
ax.set_xlim([1E11,1E17])
ax.set_ylim([0,2])
plt.savefig('error.png')
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Yuxiang "Shawn" Wang
Gerling Research Lab
University of Virginia
+1 (434) 284-0836
https://sites.google.com/a/virginia.edu/yw5aj/
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Jody Klymak
http://web.uvic.ca/~jklymak/
Markus Haider
2015-04-08 08:09:00 UTC
Permalink
Hi Jody,

Thank you very much for your help. You are right, this is what I wanted :-)

Cheers,
Markus
Post by Jody Klymak
*xerr*/*yerr*: [ scalar | N, Nx1, or 2xN array-like ]
If a scalar number, len(N) array-like object, or an Nx1
array-like object, errorbars are drawn at +/-value relative
to the data.
If a sequence of shape 2xN, errorbars are drawn at -row1
and +row2 relative to the data.
xdat=10**data_x_log
ax.errorbar(10**data_x_log,data_y,xerr=[xdat-error_x_lower,error_x_upper-xdat],ls='',marker='o')
Cheers, Jody
Post by Markus Haider
I have the error from a table which is in log units, and the error is
given to be symmetric in log space.
Cheers,
Markus
Post by Yuxiang Wang
Typo - "standard deviation OR standard error of mean", not "OF".
Sorry.
Shawn
Post by Yuxiang Wang
If you error bars denote standard deviation of standard error of mean,
shouldn't they be non-symmetric in log scale?
Shawn
Post by Markus Haider
Hi,
I am trying to make an errorbar plot with a logarithmic x-axis. I have
symmetric errors in logspace, however if I plot them, the errors are not
symmetric anymore, as you can see in the enclosed image. Am I
misunderstanding something or is this a bug?
Thanks for your help,
Markus
import matplotlib.pyplot as plt
import numpy as np
data_x_log = np.array([13.0,15.0])
data_y = np.array([0.5,1])
error_x_log = np.array([0.5,1.])
error_x_lower = 10**(data_x_log-error_x_log)
error_x_upper = 10**(data_x_log+error_x_log)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.errorbar(10**data_x_log,data_y,xerr=[error_x_lower,error_x_upper],ls='',marker='o')
ax.set_xscale('log')
ax.set_xlim([1E11,1E17])
ax.set_ylim([0,2])
plt.savefig('error.png')
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Yuxiang "Shawn" Wang
Gerling Research Lab
University of Virginia
+1 (434) 284-0836
https://sites.google.com/a/virginia.edu/yw5aj/
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Jody Klymak
http://web.uvic.ca/~jklymak/
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Loading...