我有一个图表,用户可以点击单选按钮,使用axvspan对象突出显示部分图表。这适用于第一次选择,但每个附加选择将只绘制另一个axvspan对象而不是更新现有对象。
这是我创建的简化版本:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
fig, ax = plt.subplots()
y = [1,2,3,4,5,6,7,8,9,10]
ax.plot(y)
ax.axis([0,10,0,10])
plt.subplots_adjust(left=0.2)
rax = plt.axes([.01, 0.55, 0.15, 0.3], aspect='equal',frameon=False )
radio = RadioButtons(rax, y)
for circle in radio.circles:
circle.set_radius(0.02)
def update(label):
num = int(label)
ax.axvspan(num, num+1, alpha=0.3, color='xkcd:crimson')
plt.draw()
radio.on_clicked(update)
plt.show()
答案 0 :(得分:0)
您可以跟踪现有的axvspan
,并在每次调用remove()
时使用update()
方法:
spans = []
def update(label):
num = int(label)
if len(spans):
for span in spans:
try:
span.remove()
except ValueError:
continue
spans.append(ax.axvspan(num, num+1, alpha=0.3, color='xkcd:crimson'))
plt.draw()
radio.on_clicked(update)
plt.show()