私は線の一般化アルゴリズムを持っており、プロットにスクロール バーを追加して許容範囲を広げたいと考えています (つまり、線をより一般化します)。matplotlib を使用すると、これはどのように可能になりますか?
要約すると、スライダーをクリックしてドラッグすると、許容範囲の増加が線に反映されます。
これにはまだ本当に苦労しています。1 から 10 までの単純なスケールのスライダーが 1 つだけ必要です。
うん、デモは役に立ちます、私はただ1つのスライダーを動作させるのに苦労しています.これは私がこれまでに持っているものです.
fig = mp.figure()
ax = fig.add_subplot(111)
fig.subplots_adjust(left=0.25, bottom=0.25)
min0=1
max0=10
tolerance = 0
chain1 = ChainLoader('Wiggle1.txt')
chain = chain1[0]
chain2 = chain.generalise(tolerance)
axcolor = 'lightgoldenrodyellow'
axmin = fig.add_axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
axmax = fig.add_axes([0.25, 0.15, 0.65, 0.03], axisbg=axcolor)
tolerance = Slider(axmin, 'Min', 1, 10, valinit=min0)
#smax = Slider(axmax, 'Max', 0, 30000, valinit=max0)
def update(val):
tolerance = tolerance.val
#pp.show()
tolerance.on_changed(update)
#smax.on_changed(update)
chain2 = chain.generalise(tolerance)
pp.plotPolylines(chain2)
pp.show()
私の問題は、def update セクションの書き方です。何か助けはありますか?
from PointPlotter import PointPlotter
from ChainHandler import ChainLoader
pp=PointPlotter()
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.25)
tolerance = 0
f0 = 0
chain2 = ChainLoader('Wiggle1.txt')
for chain in chain2:
chain2 = chain.generalise(tolerance)
pp.plotPolylines(chain2)
axcolor = 'lightgoldenrodyellow'
axtol = plt.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
tolerance = Slider(axtol, 'tol', 0.1, 30.0, valinit=f0)
def update(val):
tolerance = tolerance.val
for chain in chain2:
chain2 = chain.generalise(tolerance)
pp.plotPolylines(chain2)
pp.plotPolylines(chain2)
tolerance.on_changed(update)
plt.show()
とても近い!現在はプロットしていますが、スクロール バーを使用すると、「UnboundLocalError: 割り当て前に参照されたローカル変数 'tolerance'」が返されます。@tcaswell何か助けて?