Прикрепляю код, при запуске которого слайдер меняет функцию только на одном из графиков.
Возможно ли прикрепить один слайдер к нескольким графикам? Если да, то какой фрагмент и где нужно вставить?
Уж очень хочется сделать решение задачи нагляднее…
Заранее огромное спасибо!
import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, Button #fig, ax = plt.subplots() fig = plt.figure(figsize=(10, 10)) plt.subplots_adjust(left=0.1, bottom=0.25) x = np.arange(-10.0, 10.0, 0.01) i0 = 23.8 # 0-80 h0 = 2 # 0 - 10 d0 = 1 # 0 - 10 e = i0 * h0 * (pow(h0 * h0 + (x + 0.5 * d0) * (x + 0.5 * d0), -1.5) + pow(h0 * h0 + (x - 0.5 * d0) * (x - 0.5 * d0), -1.5)) plt.subplot(121) l, = plt.plot(x, e, lw = 2, color='red') plt.axis([-10, 10, 0, 12]) plt.xlabel('$x$, m') plt.ylabel('$E(x)$, lk') plt.grid(True) plt.subplot(122) k, = plt.plot([(-0.5) * d0,0.5 * d0], [h0,h0], 'ro') plt.axis([-10, 10, 0, 12]) plt.grid(True) # some stragne color dont change axcolor = 'lightgoldenrodyellow' # add slider appearance x y width height axI = plt.axes([0.10, 0.02, 0.65, 0.03], axisbg=axcolor) axH = plt.axes([0.10, 0.07, 0.65, 0.03], axisbg=axcolor) axD = plt.axes([0.10, 0.12, 0.65, 0.03], axisbg=axcolor) # add slider - appearance name step max initial value sliderI = Slider(axI, '$I$, kd', 0.1, 80.0, valinit=i0) sliderH = Slider(axH, '$h$, m', 0.1, 10.0, valinit=h0) sliderD = Slider(axD, '$d$, m', 0.1, 10.0, valinit=d0) # update slider def update(val): # get new y and x values from sliders i0 = sliderI.val h0 = sliderH.val d0 = sliderD.val # set this new data into function l.set_ydata(i0 * h0 * (pow(h0 * h0 + (x + 0.5 * d0) * (x + 0.5 * d0), -1.5) + pow(h0 * h0 + (x - 0.5 * d0) * (x - 0.5 * d0), -1.5))) k.set_ydata([(-0.5) * d0,0.5 * d0], [h0,h0]) fig.canvas.draw_idle() # if slider changed do update sliderI.on_changed(update) sliderH.on_changed(update) sliderD.on_changed(update) # reset function resetax = plt.axes([0.85, 0.010, 0.1, 0.04]) button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975') def reset(event): sliderI.reset() sliderD.reset() sliderH.reset() button.on_clicked(reset) plt.show()