我希望从图中删除最后一个标记,以显示当前的数据点选择。下面是我的代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.25)
f0 = 0
val = 0
# Sample Data
pos_x = [0.0, 1.0, 2.5, 4.0, 8.8]
pos_y = [1.3, 2.0, 6.5, 5.0, 7.0]
# Plot all data
ax.plot(pos_x, pos_y, color="blue", marker=r'$\diamond$', linestyle='-', label="Robo")
axfreq = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor="blue")
# Create slider that will move current selection
sfreq = Slider(axfreq, 'Freq', valmin=0.0, valmax=4.0, valinit=f0, valstep=1, dragging=True)
# Adds marker at first x,y
ax.scatter(pos_x[int(val)], pos_y[int(val)], color="red", marker=r'$\spadesuit$', s=100)
# Function to update location and remove last marker
def update(val):
freq = sfreq.val
ax.scatter(pos_x[int(val)], pos_y[int(val)], color="red", marker=r'$\spadesuit$', s=100)
# remove last marker
print(pos_x[int(val)], pos_y[int(val)])
fig.canvas.draw_idle()
sfreq.on_changed(update)
ax.legend()
plt.show()
我现在用的是Python 3.9
我一直在试图找到某种方法来恢复到基本情节,然后重新添加标记到新的位置。
1条答案
按热度按时间kx7yvsdv1#
在
update(val)
函数中,您不希望创建新的散点图,而是希望更新已创建的散点图。因此,在创建图时保存对图的引用,例如将其命名为my_scatter_point
:现在,在update函数中,您可以使用
my_scatter_point.set_offsets(...)
来更新值。你不必重新设置颜色和标记。现在,当您更改滑块时,绘图将更新地物。