Skip to content Skip to sidebar Skip to footer

How To Force Errorbars To Render Last With Matplotlib

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 (see belo

Solution 1:

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 inrange(122)];
ax.errorbar(range(50),rand(50),yerr=.3*rand(50))
plt.draw()

error bar fail 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()

error bar hack

report as an issue to matploblib https://github.com/matplotlib/matplotlib/issues/1622 (now patched and closed)

Solution 2:

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)

Post a Comment for "How To Force Errorbars To Render Last With Matplotlib"