How to force errorbars to render last with Matplotlib
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)
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)