python matplotlib - восстановить граф? - PullRequest
1 голос
/ 13 июня 2011

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

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

Это действительно довольно легко сделать с помощью 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 голосов
/ 29 октября 2014

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

real_points = plt.axes (). Scatter (x = xpts, y = ypts, alpha = .4, s = размер, c = «зеленый», label ='реальные данные')

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

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

button.on_clicked (сброс)

plt.show ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...