项目9-Flask综合数据分析输出


柱状图参考代码:

from flask import Flask, render_template,Response,request
import io
import random
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import requests
import json
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np

app = Flask(__name__)
 
@app.route('/')
@app.route('/ClassChart',methods=['get'])
def Index():
    chartType= request.args.get('chartType')
    algorithm= request.args.get('algorithm')
    classNo= request.args.get('classNo')
    className= request.args.get('className')
    return render_template('Index.html',chartType=chartType,algorithm=algorithm,classNo=classNo,className,className)
 
def getHtmlText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding='utf-8'
        return r.text
    except:
        return

@app.route('/bar.png')
def plot_png():
    fig = create_figure()
    output = io.BytesIO()
    FigureCanvas(fig).print_png(output)
    return Response(output.getvalue(), mimetype='image/png')
 
def create_figure():
    fig = Figure()
    axis = fig.add_subplot(1, 1, 1)
    url='http://www.dshow.net:8801/api/rankdshow/10'
    html=getHtmlText(url)
    listRank=list()
    listDictRank=json.loads(html)
    listName=list()
    listResult=list()
    for item in listDictRank:
        listName.append(item["PlayerSID"])
        listResult.append(item["ResultResult"])
    # xs=["zz","bb","cc"]
    # # ys = [random.randint(1, 50) for x in xs]
    # ys=[11,8,44]
    axis.bar(listName, listResult)
    return fig
 
if __name__ == '__main__':
   app.run(debug = True)

Index.html代码<待写,未完>:

<h2>柱状图h2>
    <div align="center" style="width:1000px;height:500px;border:0px solid #F00">
    <p>
       <img src="/bar.png" alt="my plot">
    p> 
    div>