Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 1
Регистрация: 25.02.2016
Сообщений: 134

Matplotlib возможно ли сделать виджет регулирующий масштаб по горизонтали с авто масштабированием по вертикали

17.05.2019, 00:16. Показов 2971. Ответов 4

Студворк — интернет-сервис помощи студентам
Мне нужно регулировать ползунком масштаб графика по горизонтали и чтобы он при ручной прокрутке подстраивался по высоте(не было пустого места снизу и сверху). На ролике я показал, как мне нужно.
Python
1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
 
x = pd.read_csv('file.txt',index_col='DATE',parse_dates=True,infer_datetime_format=True)
 
z = x.iloc[:, 3].values
N = len(z)
ind = np.arange(N)
fig, ax = plt.subplots()
ax.plot(ind, z)
plt.show()
В идеале конечно добавить полосу прокрутки снизу и прокручивать весь график от начала и до конца, после установки масштаба по горизонтали. Вот здесь я попробовал добавить скролинг.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from tkinter import *
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
 
x = pd.read_csv('file.txt',index_col='DATE',parse_dates=True,infer_datetime_format=True)
z = x.iloc[:, 3].values
N = len(z)
ind = np.arange(N)
fig, ax = plt.subplots()
ax.plot(ind, z)
 
root = Tk()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
canvas.show()
 
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
 
scrollbar = tkinter.Scrollbar(master=root, orient=HORIZONTAL)
scrollbar.pack(fill=X)
 
scrollbar["command"] = canvas.get_tk_widget().xview
 
tkinter.mainloop()
Кое-что мне подсказали. Но, прокрутка прокручивает только выделенный фрагмент(увеличенный).
В C# у меня так получалось сделать. Такое сделать в Python вообще возможно?
Миниатюры
Matplotlib возможно ли сделать виджет регулирующий масштаб по горизонтали с авто масштабированием по вертикали  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2019, 00:16
Ответы с готовыми решениями:

Matplotlib.Flask. Вывод среднего значения цвета графика по вертикали и горизонтали
Сейчас требуется: - создать функцию для вывода графика среднего значения цвета по вертикали и горизонтали. Ну и по возможности...

Как в компоненте PageControl сделать имена вкладок не по вертикали, а по горизонтали?
как в компоненте PageControl сделать имена вкладок не по вертикали, а по горизонтали

Масштаб осей [matplotlib]
Как сделать так, чтобы в на графике 1 оси x по длинне соответствовала 1 оси y? А если можно, то как привести вид графика максимально к...

4
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
17.05.2019, 19:34
Цитата Сообщение от quant77 Посмотреть сообщение
В C# у меня так получалось сделать. Такое сделать в Python вообще возможно?
Неверная постановка вопроса.
И в C#, и в Питоне рисованием графиков занимается либа. В Питоне вы выбрали matplotlib, что было в C# - я не знаю. Если либа не даёт возможности сделать, как вы хотите (а такое вполне возможно, ваша хотелка не является стандартной) - значит, надо заюзать графический фреймворк. И уж там можно всё, потому что изменить масштаб (просто изменить, с вызовом из кода) - операция типовая. Другой вопрос - как.
1
0 / 0 / 1
Регистрация: 25.02.2016
Сообщений: 134
17.05.2019, 21:42  [ТС]
dondublon, Сделал регулировку масштаба на Slider(Matplotlib).
Разместил гифку как получилось.
Хорошо бы так сделать на Tkinter, он как-то поизящней будет. Но, на нем у меня пока получается, что сам холст прокручивается улетая сразу в невидимую область. Предполагаю, что нужно в Canvas сам график рисовать.
Опыта мало по Tkinter и PyQt. Если смотреть в общем плане мне нужно будет проводить с графиком различные манипуляции, подключая различные события(кнопки, прокрутки и пр.)
Миниатюры
Matplotlib возможно ли сделать виджет регулирующий масштаб по горизонтали с авто масштабированием по вертикали  
0
0 / 0 / 1
Регистрация: 25.02.2016
Сообщений: 134
17.05.2019, 21:54  [ТС]
Вернее там у меня регулировка масштаба больше косвенная, в основном прокрутка по всему увеличенному графику.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
19.05.2019, 17:45
Цитата Сообщение от quant77 Посмотреть сообщение
Хорошо бы так сделать на Tkinter, он как-то поизящней будет.
Ну так matplotlib - это либа сугубо для графиков, а Tkinter всё-таки общего назначения, хоть и куцый.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2019, 17:45
Помогаю со студенческими работами здесь

ScrollViewer по вертикали и горизонтали
Странно, смотрел примеры, но у меня не выходит, мне нужно чтобы были полосы прокрутки внизу и справа, но я знаю что фото явно больше,...

Возможно ли сделать авто-обновление кода при поступление новых данных
Делаю голосового "ассистента" и ибо мне лень писать все варианты того, как он будет меня слышать(тип у всех устройства разные и микрофоны...

Выравнивание блоков по вертикали и горизонтали
Здравствуйте! Встретился с такой проблемой. Есть блок родитель. Внутри этого блока есть один блок с текстом, а другой блок с чем угодно, но...

Центрирование изображения по вертикали и горизонтали
Здравствуйте! Мне нужна помощь. Есть каталог товаров в интернет-магазине, необходимо правильное отображение картинки товара. Я добился...

Растягивание картинки по вертикали/горизонтали
Имеется код: <html> <head> <style type="text/css"> html { height:100%; }


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru