Автор оригинала: Team Python Pool.
Привет гики и добро пожаловать в сегодняшней статье мы рассмотрим слайдер Matplotlib. Наряду с этим мы также рассмотрим его синтаксис для общего лучшего понимания. Затем мы увидим применение всей теоретической части на нескольких примерах. Но прежде давайте попробуем получить общий обзор этой функции.
Слайдер может означать разные вещи. Например, слайдер, созданный с помощью JavaScript, используется для создания слайдера изображения. Слайдер, который мы создаем с помощью библиотеки Matplotlib, помогает нам управлять визуальными свойствами нашего графика. В следующем разделе мы увидим, как создать слайдер.
Создание слайдера в Matplotlib
В этом разделе мы сосредоточимся на создании слайдера. Давайте посмотрим код, который поможет нам создать нужный слайдер. Ползунок часто используется для управления визуальным свойством участка. Поэтому нам нужно создать простой сюжет.
import numpy as np from scipy.interpolate import UnivariateSpline import matplotlib.pyplot as plt .linspace(0, 10, 20).sin(0.5 * x) * np.sin(x * np.random.randn(20)) (x, y,).linspace(0, 10, 100)(x_s).figure() .subplots().plot(x, y).plot(x_s, y_s, 'y') .figure() plt.show()
Для целей этой статьи мы будем использовать синусоидальный график в качестве ссылки. Для изменяющегося параметра мы будем использовать сплайновую кривую. Чтобы получить этот график, мы использовали как помощь NumPy, модуль Matplotlib, так и сплайн-кривую. Нам нужен href=”https://www.scipy.org/”> модуль scipy. Теперь мы следующим шагом добавим к нему слайдер. Давайте как это делается href=”https://www.scipy.org/”> модуль scipy. Теперь мы следующим шагом добавим к нему слайдер. Давайте как это делается
import numpy as np from scipy.interpolate import UnivariateSpline import matplotlib.pyplot as plt from matplotlib.widgets import Slider.linspace(0, 10, 20).sin(0.5 * x) * np.sin(x * np.random.randn(20)) (x, y,).linspace(0, 10, 100)(x_s).figure() plt.subplots_adjust(bottom=.25).subplots().plot(x, y).plot(x_s, y_s, 'y').axes([.25,.1,.65,.03])(ax_slide,"changing.0,valinit=.6,valstep=.2) .figure() plt.show()
Выше мы успешно добавили ползунок в наш график. Для этого мы внесли определенные дополнения в наш кодекс. Во – первых, мы использовали функцию subplot adjust, чтобы сделать пространство ползунка свободным. Затем мы определили размеры ползунка. Далее мы определили параметры ползунка, такие как метка, минимальное и максимальное значения. Также его начальная точка и вал шаг. Но дело в том, что наш слайдер еще не подключен к графику, и любое изменение в нем не будет иметь никаких изменений на графике.
Давайте посмотрим, как их соединить
import matplotlib matplotlib.use('Qt5Agg') import numpy as np from scipy.interpolate import UnivariateSpline import matplotlib.pyplot as plt from matplotlib.widgets import Slider .linspace(0, 10, 20).sin(0.5 * x) * np.sin(x * np.random.randn(20)) (x, y,).linspace(0, 10, 100)(x_spline) .figure().25).subplots().plot(x, y).plot(x_spline, y_spline, 'y') .axes([0.25, 0.1, 0.65, 0.03]) (ax_slide, 'changing factor', 1, 5,.5,.5) def update(val): .val (x, y,) p.set_ydata(spline(x_spline)) fig.canvas.draw() s_factor.on_changed(update) plt.show()
Здесь мы можем успешно подключить ползунок к графику. Кроме того, теперь, если внести какие-либо изменения в слайдер, это вызовет изменение в сюжете. Для этого мы определили функцию, как это совершенно очевидно из кода.
Измените цвет слайдера Matplotlib
При желании вы можете изменить цвет слайдера. Для этого все, что вам нужно сделать, это добавить параметр цвета при определении параметра слайдера. Из приведенного выше кода все, что нам нужно сделать, это добавить следующую вещь
Посмотрите, как мы можем изменить цвет нашего слайдера аналогичным образом, если вы хотите изменить шаг, на котором слайдер увеличивается или уменьшается. Вы также можете сделать это, изменив параметр "шаг val". Вы можете увидеть код ниже
Как увеличить масштаб графика с помощью ползунка
С помощью ползунка в matplotlib мы также можем увеличивать и уменьшать масштаб графика. Код, с помощью которого мы можем достичь этого, приведен ниже
import matplotlib matplotlib.use('Qt5Agg') from numpy import pi, sin import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, Button, RadioButtons def signal(amp, freq): return amp * sin(2 * pi * freq * t).figure().add_subplot(111).25,.25).arange(-10, 10.0, 0.001).plot(t, signal(5, 2),,) ax.set_xlim([0, 1]) ax.set_ylim([-10, 10]).add_axes([0.25, 0.1, 0.65, 0.03],)(zoom_slider_ax, 'Zoom', -1, 1,) def sliders_on_changed(val,.25): .get_xlim() .get_ylim() .val*scale_factor + scale - scale - scale*10 y_bottom = -10 + scale*10 ax.set_xlim([x_left, x_right]) ax.set_ylim([y_bottom, y_top]) fig.canvas.draw_idle() zoom_slider.on_changed(sliders_on_changed).add_axes([0.8, 0.025, 0.1, 0.04])(reset_button_ax, 'Reset',,) def reset_button_on_clicked(mouse_event): zoom_slider.reset() reset_button.on_clicked(reset_button_on_clicked).add_axes([0.025, 0.5, 0.15, 0.15],)(color_radios_ax, ('red', 'blue', 'green'),) def color_radios_on_clicked(label): line.set_color(label) fig.canvas.draw_idle() color_radios.on_clicked(color_radios_on_clicked) plt.show()
Это исходный график, который мы получаем в качестве вывода. Теперь с помощью ползунка мы меняем общее представление сюжета. На рисунке ниже показано изменение, которое происходит
Matplotlib Слайдер Не Работает Исправлена Проблема
Виджет Matplotlib требует внешней поддержки для отображения их в окне. Что еще более важно, если они используются в Pycharm или Jupiter customized python shell, они могут оставаться неинициализированными. Поскольку это программное обеспечение не поддерживает определенные графические модули, вам необходимо изменить базовый модуль, используемый для создания графического интерфейса.
Предположим, вы используете Pycharm Ide или jupyter notebook для написания своей программы. Тогда виджеты могут не быть интерактивными по своей природе. Чтобы сделать их интерактивными, все, что вам нужно сделать, это установить модуль "PYQT5" и добавить его в свой код –
import matplotlib matplotlib.use('Qt5Agg')
Таким образом, наш виджет становится интерактивным. Qt5Agg относится к модулю PyQt5, который славится своими продвинутыми функциями графического интерфейса. Перед использованием этого модуля вам необходимо убедиться, что на вашем компьютере установлен PyQt5. Если нет, то выполните эту команду в вашем терминале – pip install PyQt5
Использование этой функции гарантирует, что ваши окна Matplotlib будут созданы с помощью модуля PyQt5.
Альтернативное решение –
import matplotlib.pyplot as plt from matplotlib.widgets import Slider, Button, RadioButtons import matplotlib matplotlib.use('TkAgg')
Более того, если использование PyQt5 в качестве графического интерфейса не работает для вас, вам нужно изменить модуль на базовый Tkinter. Поскольку Tkinter предустановлен в python и не требует внешних модулей, он может работать легко.
Вывод
В этой статье мы рассмотрели слайдер Matplotlib. Мы рассмотрели пошаговую процедуру того, как мы можем выполнить это в нашей программе. Мы также посмотрели на трюк, сделав наш слайдер интерактивным. В конце концов, мы можем сделать вывод, что с помощью ползунка мы можем изменить визуальное представление нашего сюжета.
Надеюсь, эта статья смогла развеять все сомнения. Но если у вас есть какие-либо нерешенные вопросы, не стесняйтесь писать их ниже в разделе комментариев.