Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Matplotlib. Как реализовать скроллбар?

Всем привет. Пытаюсь изучать язык Python + библиотеку Matplotlib и на данный момент я застрял с некоторыми моментами: https://i.stack.imgur.com/qFz7e.png
Первый:
Я не знаю, как я могу удалить (в окне), нотации (axex: х,Y и их координаты) которые видно на скрине?
Второй:
Я хотел бы знать - могу ли я установить полосу прокрутки на любом графике? Я имею в виду, мне нужна фиксированная Ширина на графике и если содержание (какое-то количество точек или японские свечи) внутри него будут расти(по ширине) - мне нужно появление полосы прокрутки с низу чарта.
Это можно реализовать на нейтивном Python + matplotlib? (без wx Python, tkinter и т.д. и т.п.)
P. S. Буду признателен за любые конструктивные советы.


Ответ

Что касается полосы прокрутки, то ее можно сделать при помощи виджета "Slider", но это будет не совсем просто.
Попробуйте вот такой пример:
from matplotlib.widgets import Slider import math
import matplotlib.pyplot as plt
fig, ax = plt.subplots() plt.subplots_adjust(left=0.25, bottom=0.25)
t = [i / 100. for i in range(0, int(math.pi) * 100, 1)]
s = [math.sin(i * 20) for i in t] l, = plt.plot(t, s, lw=2, color='red') plt.axis([0, 1, -10, 10])
axcolor = 'gray' ax_x_pos = plt.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
wsize = 10
x_pos = Slider(ax_x_pos, 'Position', 0, len(t) - wsize - 1, valfmt='%d', valinit=0)
ax.set_xlim(t[0], t[wsize]) ax.set_ylim(-1.1, 1.1)
def update(val): print(x_pos.val) pos = int(x_pos.val) ax.set_xlim(t[pos], t[pos + wsize]) fig.canvas.draw_idle()
x_pos.on_changed(update)
plt.show()
Чтобы убрать отображение координат, необходимо заменить функцию вывода на "пустышку":
import matplotlib.pyplot as plt
plt.figure(1) plt.plot([1, 2, 3]) plt.gca().format_coord = lambda x, y: '' plt.show()

Комментариев нет:

Отправить комментарий