I am trying over-plot some empirical data with error bars on top of my modelled data. The error bars seem to be rendering first and are consequently getting over written (s
This looks like it is a bug in matplotlib
where the zorder
argument of the errorbar
is not correctly passed to the vertical lines part of error bars.
replicates your problem :
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.gca()
[ax.plot(rand(50),color='0.75') for j in range(122)];
ax.errorbar(range(50),rand(50),yerr=.3*rand(50))
plt.draw()
Hacky work around:
fig = plt.figure()
ax = plt.gca()
[ax.plot(rand(50),color='0.75',zorder=-32) for j in range(122)];
ax.errorbar(range(50),rand(50),yerr=.3*rand(50))
plt.draw()
report as an issue to matploblib https://github.com/matplotlib/matplotlib/issues/1622 (now patched and closed)
This is a known bug in matplotlib
. Link to github issue
Hacky solution: Add the argument zorder=3
when you call plt.errorbar
, like plt.errorbar(..., zorder=3)