使用 Streamlit、Dash 或 Flask 进行绘图

哪个是您的数据科学应用程序的最佳框架——如果我说您可以通过交换您使用的框架将应用程序的大小减少一半,您会怎么说?我通过在 Dash、Flask 和 Streamlit 中编写相同的简单应用程序进行了快速实验,结果很有启发性。破折号应用程序…

数据可视化

使用 Streamlit、Dash 或 Flask 进行绘图

哪个是您的数据科学应用程序的最佳框架

使用 Streamlit、Dash 或 Flask 进行绘图

如果我说你可以通过交换你使用的框架将应用程序的大小减少一半,你会怎么说。

我通过在 Dash、Flask 和 Streamlit 中编写相同的简单应用程序进行了快速实验,结果很有启发性。

Dash

该应用程序是从 Dash 文档中复制的,代码如下:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import pandas as pdapp = dash.Dash(__name__)df = pd.DataFrame({
'Fruit': ['Apples', 'Oranges', 'Bananas', 'Apples', 'Oranges', 'Bananas'],
'Amount': [4, 1, 2, 2, 4, 5],
'City': ['SF', 'SF', 'SF', 'Montreal', 'Montreal', 'Montreal']
})fig = px.bar(df, x='Fruit', y='Amount', color='City',
barmode='group')app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure=fig
)
])if __name__ == '__main__':
app.run_server(debug=True)

代码由 Plotly 提供 — 版权所有 © 2019 Plotly,麻省理工学院许可证[0]

这并不难理解:首先我们导入库,然后设置 Flask 应用程序,然后定义数据框,然后是实际绘制图形的行。 app.layout 部分本质上是在 Dash 中编写的 HTML,最后一行运行应用程序。

它会生成一个如下所示的网页:

使用 Streamlit、Dash 或 Flask 进行绘图

由于 Dash 本质上是一个使用 Plotly 的 Flask 应用程序,因此我编写了一个使用 Flask 和 Plotly 构建的等效应用程序(请参阅我的文章 Web Visualization with Plotly and Flask)并将其与 Dash 版本进行比较。[0]

我个人的看法是我的 Flask/Plotly 应用程序更容易编写和更灵活(您的意见可能不同)。

一个简单的 Flask + Plotly 应用程序

这个应用程序有两个部分:Flask 应用程序本身和一个 HTML 模板。 Flask 应用程序与 Dash 应用程序执行类似的工作,但没有构建实际的网页。该网页是一个 HTML 模板,我们将 Plotly 数据从 Flask 应用程序传递给它,以便它可以显示图表。

Flask 部分的结构与 Dash 类似:

from flask import Flask, render_template
import pandas as pd
import json
import plotly
import plotly.express as pxapp = Flask(__name__)@app.route('/')
def notdash():
df = pd.DataFrame({
'Fruit': ['Apples', 'Oranges', 'Bananas', 'Apples', 'Oranges',
'Bananas'],
'Amount': [4, 1, 2, 2, 4, 5],
'City': ['SF', 'SF', 'SF', 'Montreal', 'Montreal', 'Montreal']
})fig = px.bar(df, x='Fruit', y='Amount', color='City',
barmode='group')graphJSON = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)return render_template('notdash.html', graphJSON=graphJSON)

模板是要显示的网页。它相当于 Dash 应用程序的布局,但我们将其写入 HTML 文件。



你好 Plotly(但不是 Dash)

 
id=’chart’ class=’chart’”>


您可以在原始文章中找到该应用程序的描述。[0]

这是它的样子:

使用 Streamlit、Dash 或 Flask 进行绘图

和原版差不多。

Streamlit + Plotly

自从我写了之前的那篇文章后,我发现了 Streamlit。 Streamlit 是一个非常易于使用的框架,可让您编写包含图表、数据框、一些非常易于使用的 UI 元素(如选择框、按钮、文本字段等)的数据科学应用程序。

它是 100% 的 Python。

这是用 Streamlit 编写的等效应用程序:

import pandas as pd
import streamlit as st
import plotly.express as pxdf = pd.DataFrame({
"Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges",
"Bananas"],
"Amount": [4, 1, 2, 2, 4, 5],
"City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"]
})fig = px.bar(df, x="Fruit", y="Amount", color="City",
barmode="group")st.title('Hello Streamlit')
st.write('''
Streamlit: A web application framework for Python.
''')
st.plotly_chart(fig)

您应该注意到的是绝对简单。除了最后三行之外,代码与其他应用程序几乎相同——它必须是用于声明 Pandas 数据框和绘制 Plotly 图形的 Python 代码。

但是应用程序的其余部分,呈现网页的那一点只是三行代码!

它看起来确实与其他应用程序略有不同,这是因为 Streamlit 对您的应用程序的默认外观强加了一个视图。

使用 Streamlit、Dash 或 Flask 进行绘图

不得不说,Streamlit 在网页设计方面更具限制性,因为它不允许您使用 Dash 或 Flask 应用程序等 HTML 的全部功能。但是有一些使用 Streamlit 制作的非常漂亮的应用程序,这个非常简单的应用程序的代码只有其他版本的一半。它可能不是所有情况下的解决方案,但肯定值得考虑。

一如既往,感谢您的阅读。这是对 Streamlit 在创建数据科学应用程序方面的优势的简要介绍,您可以在我的 Github 存储库中找到代码。[0]

您可能对其他展示 Streamlit 优势的文章感兴趣。你可以从我在 Medium 上的个人资料中浏览它们,或者在我的不定期通讯 Technofile 中查看它们的列表(如果你订阅了 Technofile,你会收到我写的新文章的更新)。[0][1]

您还可以在我的网站上找到我的其他 Medium 文章:[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年4月24日
下一篇 2022年4月24日

相关推荐