gpt4 book ai didi

python - Matplotlib 依赖 slider

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:01 25 4
gpt4 key购买 nike

我想通过选择权重来选择三角形的一个点。这应该通过控制 2 个 slider (matplotlib.widgets.Slider) 来完成。这两个 slider 表示定义点的三个权重中的两个。第三个权重很容易计算为 1.0 - slider1 - slider2

现在很明显所有权重的总和应该等于 1.0,因此选择 0.8 和 0.9 作为两个 slider 的值应该是不可能的。参数 slidermax 允许使 slider 依赖,但我不能说:

slider2 = Slider(... , slidermax = 1.0-slider1)

slidermax 需要类型 Slider,而不是 integer。我怎样才能创建比这个 slidermax 选项稍微复杂一点的依赖关系?

最佳答案

@ubuntu 的回答很简单。

另一种选择是子类化 Slider 以完全按照您的意愿行事。这将是最灵活的(您甚至可以使 slider 相互更新,而它们目前不这样做)。

但是,在这种情况下很容易使用“ducktyping”。唯一的要求是 sliderminslidermax 有一个 val 属性。它们实际上不必是 Slider 的实例。

考虑到这一点,您可以执行以下操作:

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

class FakeSlider(object):
def __init__(self, slider, func):
self.func, self.slider = func, slider
@property
def val(self):
return self.func(self.slider.val)

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

sliderax1 = fig.add_axes([0.15, 0.1, 0.75, 0.03], axisbg='gray')
sliderax2 = fig.add_axes([0.15, 0.15, 0.75, 0.03], axisbg='gray')

slider1 = Slider(sliderax1, 'Value 1', 0.1, 5, valinit=2)
slider2 = Slider(sliderax2, 'Value 2', -4, 0.9, valinit=-3,
slidermax=FakeSlider(slider1, lambda x: 1 - x))
plt.show()

关于python - Matplotlib 依赖 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751144/

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