python matplotlib - восстановить граф?

1

У меня есть функция python, которая генерирует список со случайными значениями.

После вызова этой функции я вызываю другую функцию, которая отображает случайные значения с помощью matplotlib.

Я хочу, чтобы иметь возможность щелкнуть какой-то ключ на клавиатуре/мыши и выполнить следующее:

(1) новый список случайных значений будет re- сгенерирован

(2) будут построены значения из (1) (заменив текущий график matplotlib)

Значение, я хочу иметь возможность просматривать новые диаграммы одним нажатием кнопки. Как мне это сделать в python?

Теги:
matplotlib

2 ответа

3
Лучший ответ

Это действительно довольно легко сделать с matplotlib. Основная идея - использовать

plt.connect('button_press_event', onclick)

для вызова onclick всякий раз, когда пользователь нажимает кнопку:

import matplotlib.pyplot as plt
import numpy as np

class Main(object):
    def clear(self):
        plt.clf()
    def redraw(self):
        self.clear()
        plt.plot(self.data)
        plt.title('100')
        plt.text(50,0.85,'100')
        plt.draw()
    def on_click(self,event):
        self.data=np.random.random(100)    
        self.redraw()        
    def run(self):
        plt.figure()
        plt.connect('button_press_event', self.on_click)
        plt.show() 

    def __init__(self):
        self.data=np.random.random(100)    

if __name__=='__main__':           
    m=Main()
    m.run()
    print(m.data)
  • 0
    благодарю вас. Я дам ему попробовать! Можете ли вы также предложить, как написать текст (скажем, число 100) в верхней средней части диаграммы?
  • 0
    @ user3262424: Да; Вы можете использовать plt.title для размещения строки в верхней средней части графика (вне осей графика). Или вы можете использовать plt.text чтобы разместить строку где-нибудь внутри осей графика. Я изменил метод redraw чтобы показать оба.
Показать ещё 1 комментарий
0

из кнопки импорта matplotlib.widgets

real_points = plt.axes(). scatter (x=xpts, y=ypts, alpha =.4, s=size, c = 'green', label = 'real data')

# Reset Кнопка
#rect = [слева, снизу, ширина, высота]
reset_axis = plt.axes([0,4, 0,15, 0,1, 0,04])
button = Button (ax=reset_axis, label = 'Reset', color = 'lightblue', hovercolor = '0.975')

def reset (событие):
  real_points.remove()

button.on_clicked (reset)

plt.show()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню