Python 单击其他绘图时渲染新绘图

Python 单击其他绘图时渲染新绘图,python,matplotlib,plot,flask,event-handling,Python,Matplotlib,Plot,Flask,Event Handling,当调用plot_home()时,我最初呈现了两个绘图。但是,当我单击每个绘图时,我希望它调用python函数plot_parameter(),该函数将根据单击的绘图呈现另一个绘图 我已经尝试过编写这段代码,但我不知道如何检测是否单击了第一个绘图或第二个绘图。如果单击第一个绘图,我想绘制一个图形,如果单击第二个绘图,我想绘制另一个图形。 如何使这些绘图可单击,以便在单击时打开另一个绘图 from flask import Flask import matplotlib matplotlib.use

当调用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)

mpld3库当前不支持映像的事件处理。 Matplotlib通常支持图像的事件处理。但是,当与flask一起使用时,我们需要将matplotlib绘图作为图像写入画布,因为无法进行事件处理。 最好的解决方案是使用javascript使用d3js。我们可以从python返回要在html中绘制的值,然后使用支持绘图事件处理的d3js进行绘图