问题
I have a plot in which some data is represented by a scatter plot with error bars and I want to fit a curve to it. However, no matter where in the code I plot the curve, the error bars float on top of it. I want the fitted curves to display in front of the error bars because otherwise I can't see it.
Here is a simple example of the issue:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
x = np.arange(1,10)
r = np.random.random(x.size)
fig1, ax = plt.subplots()
ln1 = ax.plot(2*x,x,'g')
ax3 = ax.twinx()
ln2 = ax3.errorbar(x,r,yerr=x,color='red',fmt='o')
ln2fit = ax3.plot(x,r-0.3,'b')
and the plot it produces:
There are two axes because I'm comparing two datasets.
As you can see, even though I plotted the curve above the error bars, the error bars and points still obscure the curve. What can I do to disable this?
回答1:
You can specify the zorder:
ln2 = ax3.errorbar(x,r,yerr=x,color='red',fmt='o',zorder=1)
If you also want to have the green line in the foreground you need to move it's axes ax
to a higher zorder (default is 0) and hide the axes patch of ax
so that the then underlying ax3
stays visible:
ax.set_zorder(1)
ax.patch.set_visible(False)
来源:https://stackoverflow.com/questions/66139357/error-bars-in-matplotlib-display-over-other-curves