Reputation: 2030
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()
Upvotes: 27
Views: 29739
Reputation: 1
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)
Upvotes: 0
Reputation: 54330
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('-.')
Upvotes: 38