为了账号安全,请及时绑定邮箱和手机立即绑定

在散景中绘制多列数据帧

在散景中绘制多列数据帧

SMILET 2021-11-09 19:30:05
我已经构建了一个简单的烧瓶应用程序。前端(视图)提供了两个复选框 A 和 B,它们是数据框列。当我选择任一列时,将绘制列值。这是代码。from flask import Flask, render_template, redirect, requestfrom bokeh.plotting import figure, show, output_file,saveimport webbrowserfrom threading import Timerimport pandas as pdimport numpy as npimport osapp = Flask(__name__)@app.route('/')def index():    return render_template('sop1.html')@app.route('/FlaskTutorial',  methods=['POST'])def user_rec():    dates = pd.date_range('20130101', periods=100)    df1 = pd.DataFrame(np.random.randn(100, 2), index=dates,      columns=list('AB'))    result = request.form     signal = request.form.getlist('check')    print(signal)    df=pd.DataFrame(df1[signal])    path=os.getcwd()    plot=figure(title="Time series data for "+str(df.columns[0])+" pair",width=1000,height=600,x_axis_type='datetime',tools='hover')       plot.line( source=df,x='index',y=str(df.columns[0]), line_color="blue",legend="spot rate")output_file(str(path)+'/templates/myplot11.html')save([plot])return render_template('myplot11.html', result=result)def open_browser():      webbrowser.open_new('http://127.0.0.1:3190/') if __name__ == '__main__':    Timer(1, open_browser).start();    app.run(port=3190,debug=True)我想要的是,当我选择两列时要绘制的两列(水平或垂直)。这是 sop1.html<!DOCTYPE html><html><head>   <body>      <form method="post" action="/FlaskTutorial">      <div class="custom1">         <p>Dataframe columns</p>         <input type = "checkbox" name = "check" value = "A"> A <br> </br>        <input type = "checkbox" name = "check" value = "B"> B<br> </br>       </div>     <input type="submit" value="Submit" name="ok"/>          </form>   </body></html>请建议前进的方向。我的散景版本是 1.0.4
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

侥幸,我找到了解决方案。


result = request.form 

signal = request.form.getlist('check')


dd=[]

for i in range(len(signal)):

    print(i)

    dd.append(bokeh_plot(df1,i))

save([dd[0],dd[1]]) 

这是 bokeh_plot 函数


def bokeh_plot(df,i):

    path=os.getcwd()

    plot=figure(title="Time series data for "+str(df.columns[i])+" pair",width=1000,height=600,x_axis_type='datetime',tools='hover')   

    plot.line( source=df,x='index',y=str(df.columns[i]), line_color="blue",legend="spot rate")

    output_file(str(path)+'/templates/myplot11.html')

    #save([plot])

    return plot


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信