gpt4 book ai didi

python - 更新 `axvspan`的位置

转载 作者:行者123 更新时间:2023-12-01 04:06:04 33 4
gpt4 key购买 nike

我想“模拟”图中两个对象的位置。我想用 axvspan 来做到这一点。我想用 slider 移动一个 axvspan。我想做这样的事情:

import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)

t = 2
g0 = 10

filter_loc, = plt.axvspan((50-g0-t), (50-g0), color = "blue")
sensor_loc = plt.axvspan(50,80, color="red")
plt.axis([0, 1, -10, 10])

axgap = plt.axes([0.25, 0.1, 0.65, 0.03])
sgap = Slider(axgap, 'Gap', 0.01, 30.0, valinit=g0)

def update(val):
gap = sgap.val
filter_loc.set_xdata(50-gap-t,50-gap)
fig.canvas.draw_idle()

sgap.on_changed(update)
plt.show()

当以多种方式尝试时,我总是收到错误:

filter_loc, = plt.axvspan((50-g0-t), (50-g0))
TypeError: 'Polygon' object is not iterable

所以在我看来,axvspan 不喜欢使用 slider 更新值。我仍然可以通过使用 axvspan 来实现此目的吗?

最佳答案

filter_loc 之后有一个额外的逗号。除此之外,filter_loc 没有 set_xdata 属性。您可以通过调用 set_xy() 来修改它,例如这样的操作:

def set_xvalues(polygon, x0, x1):
_ndarray = polygon.get_xy()
_ndarray[:, 0] = [x0, x0, x1, x1, x0]
polygon.set_xy(_ndarray)

def update(val):
gap = sgap.val
set_xvalues(filter_loc, 50-gap-t, 50-gap)
fig.canvas.draw_idle()

顺便说一句,当前的 plt.axis() 值阻止显示蓝色方 block 。

关于python - 更新 `axvspan`的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35551903/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com