2015-02-03 4 views
0

У меня есть 2 графика, которые отображаются первоначально, когда вызывается plot_home(). Однако, когда я нажимаю на каждый сюжет, я хочу, чтобы он вызывал функцию python plot_parameter(), которая будет отображать другой сюжет, основанный на том, какой сюжет щелкнут.Отредактируйте новый сюжет при щелчке другого сюжета

Я пробовал написать этот код, но я не знаю, как определить, щелкнут ли первый сюжет или щелкнул второй сюжет. Если щелкнуть первый сюжет, я хочу построить график и, если щелкнуть второй график, я хочу построить другой график. Как сделать этот участок кликабельным так, чтобы он открывал другой сюжет при нажатии?

from flask import Flask 
import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import mpld3 

app = Flask(__name__) 

@app.route('/') 
def home(): 
    return plot_home() 

def onclick(event): 
    print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(event.button, event.x, event.y, event.xdata, event.ydata) 
    return plot_parameter() 


@app.route('/') 
def plot_home(): 
    fig = plt.figure() 
    fig.set_size_inches(5,5) 
    parameter_values = [1,2,3,4] 
    axis = fig.add_subplot(211) 
    axis.plot(parameter_values,'g') 
    fig.canvas.mpl_connect('button_press_event', onclick) 

    parameter_values = [5,6,7,8] 
    axis = fig.add_subplot(212) 
    axis.plot(parameter_values,'g') 
    fig.tight_layout() 
    fig.canvas.mpl_connect('button_press_event', onclick) 
    mpld3.show() 

@app.route('/') 
def plot_parameter(): 
    fig = plt.figure() 
    fig.set_size_inches(5,5) 
    if(first plot is clicked plot this graph) 
     parameter_values = [9,10,11,12] 
     axis = fig.add_subplot(211) 
     axis.plot(parameter_values,'g') 

    if(second plot was clicked plot this graph) 
     parameter_values = [13,14,15,16] 
     axis = fig.add_subplot(212) 
     axis.plot(parameter_values,'g') 
    mpld3.show() 

if __name__ == '__main__': 
    app.run(debug=True) 

ответ

0

Обработка событий изображениями в настоящее время не поддерживается библиотекой mpld3. Matplotlib обычно поддерживает обработку событий изображений. Однако при использовании с флягой нам нужно написать график matplotlib на холсте как изображение, из-за которого обработка событий невозможна. Лучшим решением было бы использовать d3js с помощью javascript. Мы можем вернуть значения, которые будут отображаться t html из python, а затем построить его с помощью d3js, который поддерживает обработку событий графиков.

Смежные вопросы