Python绘图API:如何通过flask API公开科学Python绘图?
我需要从烧瓶表单的数据创建一个绘图。 我已经试着在下一个网页中展示matplotlib散点图,你怎么能看到我不知道怎么做,因为没有人能解释我 所以,你能给我一些建议,如何在网页中分散使用python数据吗。 如果它是在一个网页与形式更好 我还检查了matplotlib的工作速度太慢了kek 已添加 但在填写表格后,如何在下一页显示图像 我想我需要使用另一个烧瓶。func如下:Python绘图API:如何通过flask API公开科学Python绘图?,python,matplotlib,flask,Python,Matplotlib,Flask,我需要从烧瓶表单的数据创建一个绘图。 我已经试着在下一个网页中展示matplotlib散点图,你怎么能看到我不知道怎么做,因为没有人能解释我 所以,你能给我一些建议,如何在网页中分散使用python数据吗。 如果它是在一个网页与形式更好 我还检查了matplotlib的工作速度太慢了kek 已添加 但在填写表格后,如何在下一页显示图像 我想我需要使用另一个烧瓶。func如下: 从flask导入flask,呈现模板,url,重定向,发送文件,做出响应 从表单导入AAForm 从“创建打印导入绘图
从flask导入flask,呈现模板,url,重定向,发送文件,做出响应
从表单导入AAForm
从“创建打印导入绘图仪”
导入操作系统
app=烧瓶(名称)
SECRET_KEY=os.uradom(32)
app.config['SECRET\u KEY']=SECRET\u KEY
@app.route('/',方法=['GET','POST'])
def index():
form=AAForm()
if form.validate_on_submit():
返回呈现模板('img.html',url='/kek')
返回呈现模板('index.html',form=form)
@app.route('/kek',methods=['GET','POST'])
def img(表格):
bytes_obj=绘图仪(form.uniprot_id.data,['K','R','H'])
返回发送文件(字节),
附件_filename='plot.png',
mimetype='image/png')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)
这是:
但我不明白如何将form.data发送到img.func绘图数据
这里一种可能的方法是构建一个返回数据的API,并让应用程序前端使用或多或少复杂的javascript图表库呈现数据
我们需要什么组件:
数据集:来自scikit学习的乳腺癌数据集示例
A图:首先从seaborn获得一个简单的相关图
API:使用flask创建简单的API
首先加载数据并进行绘图
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import io
from sklearn.datasets import load_breast_cancer
def do_plot():
# Loading
data = load_breast_cancer()
breast_cancer_df = pd.DataFrame(data['data'])
breast_cancer_df.columns = data['feature_names']
breast_cancer_df['target'] = data['target']
breast_cancer_df['diagnosis'] = [data['target_names'][x] for x in data['target']]
feature_names= data['feature_names']
corr = breast_cancer_df[list(feature_names)].corr(method='pearson')
f, ax = plt.subplots(figsize=(11, 9))
cmap = sns.diverging_palette(220, 10, as_cmap=True)
mask = np.zeros_like(corr, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,
square=True, linewidths=.5, cbar_kws={"shrink": .5})
# here is the trick save your figure into a bytes object and you can #afterwards expose it via flas
bytes_image = io.BytesIO()
plt.savefig(bytes_image, format='png')
bytes_image.seek(0)
return bytes_image
这将导致下图:
现在通过烧瓶API公开此BytesIO对象
from flask import Flask, send_file, make_response,
from plot import do_plot
app = Flask(__name__)
@app.route('/plots/breast_cancer_data/correlation_matrix', methods=['GET'])
def correlation_matrix():
bytes_obj = do_plot()
return send_file(bytes_obj,
attachment_filename='plot.png',
mimetype='image/png')
if __name__ == '__main__':
app.run(debug=False)
如果服务器在本地主机上运行,则映像将在下可用
为了让最终用户访问绘图,请将数据集成到HTML网站中。您只需将数据包含在html正文中,它就可以开箱即用
参考:它是否也适用于您的数据集。如果你需要帮助,请告诉我(哦,对不起)我的意思是“请回答编辑后的问题”,你可以在“添加”好的,对不起,但这也会帮助其他人之后开始阅读。就让它为人民服务吧。在“添加”之后阅读,你想让我为这个问题创建另一个特别的问题吗?