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

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

17.05.2019, 00:16. Показов 2922. Ответов 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru