Question

Is it possible to set the same linestyle on matplotlib errorbars as the data points?

In the example below, two lines are plotted. One of them is dashed because of the ls='-.' parameter. However, the errorbars are solid lines. Is it possible to modify the style/look of the errorbars to match the results line?

import matplotlib.pyplot as plt
import numpy as np

x = np.array(range(0,10))
y = np.array(range(0,10))
yerr = np.array(range(1,11)) / 5.0
yerr2 = np.array(range(1,11)) / 4.0

y2 = np.array(range(0,10)) * 1.2

plt.errorbar(x, y, yerr=yerr, lw=8, errorevery=2, ls='-.')
plt.errorbar(x, y2, yerr=yerr2, lw=8, errorevery=3)
plt.show()
Était-ce utile?

La solution

It is trivial, changing the linestyle of the errorbars only require a simple .set_linestyle call:

eb1=plt.errorbar(x, y, yerr=yerr, lw=2, errorevery=2, ls='-.')
eb1[-1][0].set_linestyle('--') #eb1[-1][0] is the LineCollection objects of the errorbar lines
eb2=plt.errorbar(x, y2, yerr=yerr2, lw=2, errorevery=3)
eb2[-1][0].set_linestyle('-.')

enter image description here

Autres conseils

You can also use the fmt option that is included in the plt.errorbar() command.

For example, in your case:

plt.errorbar(x, y, yerr=yerr, fmt='-.' , lw=8, errorevery=2)
plt.errorbar(x, y2, yerr=yerr2, lw=8, errorevery=3)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top