Python 替换jupyter matplotlib图表中的最近一行

Python 替换jupyter matplotlib图表中的最近一行,python,matplotlib,jupyter,Python,Matplotlib,Jupyter,我正在使用matplotlib生成一个图表,其中y轴上任意点的动态线作为阈值(即,用户在图表的某个位置单击,将生成一条新的线来替换上一条线)。我可以使用axhline()添加新行,但我不知道如何删除前一行。我已经看到了对Artist.remove和ax.remove.line(0)的引用,但我对matplotlib还是相当陌生,还没有找到任何工作 NB:我只在Jupyter工作过,所以我不知道这是否会像在Jupyter之外那样有效。另外,我知道单独的update()过程在这里并不是必需的,但我很

我正在使用matplotlib生成一个图表,其中y轴上任意点的动态线作为阈值(即,用户在图表的某个位置单击,将生成一条新的线来替换上一条线)。我可以使用
axhline()
添加新行,但我不知道如何删除前一行。我已经看到了对
Artist.remove
ax.remove.line(0)
的引用,但我对matplotlib还是相当陌生,还没有找到任何工作

NB:我只在Jupyter工作过,所以我不知道这是否会像在Jupyter之外那样有效。另外,我知道单独的
update()
过程在这里并不是必需的,但我很可能需要它来实现未来的功能

%matplotlib笔记本
将matplotlib.pyplot作为plt导入
导入matplotlib.figure,如图所示
将numpy作为np导入
从matplotlib.axes将轴导入为ax
从matplotlib.artist导入艺术家作为艺术
x=np.随机.正常(尺寸=1000)
plt.hist(x,箱子=50,α=0.75)
plt.gcf().canvas.draw()
绿色=plt.axhline(35,color='g')
打印('绿线={}'。格式(绿色))
def更新(阈值,行):
plt.gca().set_title('最近一行={}'。格式(行))
def on_按下(事件):
阈值=event.ydata
lines=plt.axhline(阈值,color='r')
更新(阈值,行)
plt.gcf().canvas.mpl\u connect(“按钮按下事件”,打开按下)

您可以使用
plt.gca().lines
获取子批中的行,因此您只需在按下()时的
函数开头添加类似的内容即可:

plt.gca().lines.pop()

或者将
plt.gca().pop(0)
添加到
update()
函数似乎也能起作用。

我不知道这是最好的方法还是我运气好,但我发现在画新线之前调用
plt.delaxes()
可以满足我的需要。
axhline()
是我在用户有机会与它交互之前在绘图上绘制的最后一个东西,因此这可能就是它工作的原因。

您应该添加您的解决方案作为答案,可能比编辑Q更简洁。可以回答您自己的问题。完成,谢谢。我不确定在这种情况下该怎么做。我不能让这两个都为我工作,旧的线路没有被删除
plt.delaxes()
在这种情况下做了我需要的,所以我很好。