Error bars in matplotlib display over other curves

时光总嘲笑我的痴心妄想 提交于 2021-02-11 06:52:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!