python - Matplotlib 单击时删除行
问题描述
我正在尝试编写一些东西,让我通过单击matplotlib图来删除线条。稍后我将尝试通过单击它们来删除这些行。
目前,我已经尽可能地简化了代码,但我仍然无法弄清楚。两条线都保留在绘图上,如果我单击两次,我会收到以下消息:
“ValueError:list.remove(x):x不在列表中”。
如果我将 remove 命令onclick(event)
放在onclick(event)
.
但我不能走得更远。我也试过用 清除整个情节plt.gca()
,但这似乎没有任何作用。
显然我不明白一些基本的东西,所以我希望有人能澄清我做错了什么。
import matplotlib.pyplot as plt
import numpy as np
xdata = np.arange(0,20,1)
ydata1 = np.arange(0,40,2)
ydata2 = np.arange(0,80,4)
fig,ax = plt.subplots()
line1, = ax.plot(xdata, ydata1)
line2, = ax.plot(xdata, ydata2)
def onclick(event):
line1.remove() #error on second click
plt.gcf().canvas.mpl_connect('button_press_event', onclick)
解决方案
如果您只需要删除行并且您不关心订单。你可以使用这个:
def onclick(event):
plt.gca().lines[-1].remove()
如果您需要删除特定行:
fig,ax = plt.subplots()
line1, = ax.plot(xdata, ydata1, picker=5)
line2, = ax.plot(xdata, ydata2, picker=5)
def onclick(event):
thisline = event.artist
thisline.remove()
plt.gcf().canvas.mpl_connect('pick_event', onclick)
你可以阅读更多关于它的信息:https://matplotlib.org/3.1.1/gallery/event_handling/pick_event_demo.html
推荐阅读
- mongodb - 我可以以任何方式更改运行时 mongo 文档名称
- kubernetes - Openshift 3.9 如何将插件添加到 fluentD
- javascript - 带条件的事件发射器
- angular - Why queryParams are empty
- visual-studio - Windows SDK 版本 10.0.15063.0 和 10.0.17134.0 之间 tracewpp 的行为变化
- vba - vba 命令检查 MS Project 计划是否在服务器中签出
- excel - 从 Excel 中的多个工作表中提取某些位置单元格值以及工作表名称
- android - 项目点击后Recyclerview停留在位置
- arrays - 不能在 foreach 循环中使用 Get-ADGroup
- angular - TypeError:child.send 不是函数