让我们说你在matplotlib中有一个情节,类似的东西:
figure = Figure()
figureCanvas = FigureCanvas(figure)
axes = figure.add_subplot(111)
axes.plot([1, 2, 3], [2, 3, 1], linestyle = "None", marker = "o", color = '#1f77b4', markersize = 3)
这会给你一个3分的情节。如何从绘图中删除特定点,而不重新绘制整个内容?
答案 0 :(得分:1)
首先,您需要至少重绘一个图(Line2D
对象),否则图中不会有任何变化。
在不知道不重绘的目的的情况下,很难判断出可接受的解决方案。但是,通常您只需重绘整个画布。
要设置新数据,可以使用Line2D.set_data()
方法,如下所示。您可以按下要删除的点的数字键(0,1,2)。
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [2, 3, 1]
fig, ax = plt.subplots()
line, = ax.plot(x, y, ls="None", marker="o", color='#1f77b4', ms=10)
def remove_point(event):
try:
key = int(event.key)
xvals = x[:]
xvals.pop(key)
yvals = y[:]
yvals.pop(key)
line.set_data(xvals,yvals)
fig.canvas.draw_idle()
except:
pass
fig.canvas.mpl_connect('key_press_event', remove_point)
ax.set_title("Press number of point to remove")
plt.show()