使用Dash快速构建你的数据可视化前端

举报
Python爱好者 发表于 2020/12/29 00:12:54 2020/12/29
【摘要】 还记得上篇文章我们采用Plotly去画出各式各样的图,这次我们就来讲讲,如何把这些图片展示在你的前端上。 Dash也是Plotly制作团队开源出来的一款dashboard开发平台,主要使用python写的,它主要可以将我们画出来的数据展示在网页上。Dash最大的优点就是你在生成前端的时候不需要写任何javascript代码(已经全在底层封装好,画图特效是react...

还记得上篇文章我们采用Plotly去画出各式各样的图,这次我们就来讲讲,如何把这些图片展示在你的前端上。

Dash也是Plotly制作团队开源出来的一款dashboard开发平台,主要使用python写的,它主要可以将我们画出来的数据展示在网页上。Dash最大的优点就是你在生成前端的时候不需要写任何javascript代码(已经全在底层封装好,画图特效是react.js写的,有兴趣可以去研究一下源码),它可以直接使用Python代码将你之前在Plotly画出的图在网页上直接展示出来。

需要安装的库:


   
  1. pip install plotly
  2. pip install dash

下面我们来演示一个Dash的demo:

新建一个app.py文件,复制以下代码:


   
  1. import dash
  2. import dash_core_components as dcc
  3. import dash_html_components as html
  4. external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
  5. app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
  6. app.layout = html.Div(children=[
  7.     html.H1(children='Dash Demo', style={"text-align""center"}),
  8.     html.Div(children='''
  9.         一款牛逼的Python开发的应用程序---------Dash
  10.     ''',
  11.              style={"text-align""center""color""red"}),
  12.     dcc.Graph(
  13.         id='example-graph',
  14.         figure={
  15.             'data': [
  16.                 {'x': [123], 'y': [342], 'type''bar''name''数据源A'},
  17.                 {'x': [123], 'y': [235], 'type''bar''name''数据源B'},
  18.             ],
  19.             'layout': {
  20.                 'title''数据展示'
  21.             }
  22.         }
  23.     )
  24. ])
  25. if __name__ == '__main__':
  26.     app.run_server(debug=True)

运行效果:

下面来说明一下,如何去使用Dash这个框架:

S1: 初始化

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

  

这句话主要用来初始化渲染Dash,可以按照你制定的样式进行渲染。

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
  

代码中引用的网址是plotly自己的css样式,你也可以修改成你自己想要的其他样式,把这个css文件down到本地然后你可以对他进行修改。具体参考:

https://dash.plotly.com/external-resources

下面重点来了!

在页面上添加你想要添加的元素,首先我们需要初始化页面的布局:

app.layout = html.Div(children=[])

  

初始化完毕后我们就可以向这个布局中添加元素了,我们只需要在childern这个list中添加相应的页面元素即可:(注意:每个元素都在list中)

S2: 添加标签

添加h1标题

html.H1(children='Dash Demo', style={"text-align""center"}),

  

添加一个div


   
  1. html.Div(children='一款牛逼的Python开发的应用程序---------Dash',
  2.              style={"text-align""center""color""red"}),

我们可以在里面添加style参数来制定它的样式。

S3: 添加你画的图

Graph对象主要就是用来进行画图的,你只需要将画图的数据传递给figure参数即可。


   
  1.  dcc.Graph(
  2.         id='example-graph',
  3.         figure={
  4.             'data': [
  5.                 {'x': [123], 'y': [342], 'type''bar''name''数据源A'},
  6.                 {'x': [123], 'y': [235], 'type''bar''name''数据源B'},
  7.             ],
  8.             'layout': {
  9.                 'title''数据展示'
  10.             }
  11.         }
  12.     )

这里说一下,plotly画出的每个对象都能直接当成参数传入。

我们看一个例子:选择我们上次画等高线图,直接插入画好的fig对象。


   
  1. import plotly.graph_objects as go
  2. fig = go.Figure(data=
  3.         go.Contour(
  4.             z=[[1010.62512.515.62520],
  5.                [5.6256.258.12511.2515.625],
  6.                [2.53.1255.8.12512.5],
  7.                [0.6251.253.1256.2510.625],
  8.                [00.6252.55.62510]]
  9.         ))
  10. ......... dcc.Graph(
  11.         id='example-graph',
  12.         figure=fig
  13.     )


添加多个图:

S4: 添加常见的网页控件

输入框:


   
  1. dcc.Input(id='my-id',
  2.               value='2333',
  3.               type='text'
  4.               ),

下拉框:


   
  1. dcc.Dropdown(
  2.         options=[
  3.             {'label''New York City''value''NYC'},
  4.             {'label''Montréal''value''MTL'},
  5.             {'label''San Francisco''value''SF'}
  6.         ],
  7.         value='MTL'
  8.     ),

滑动条:


   
  1. dcc.Slider(
  2.         min=0,
  3.         max=9,
  4.         marks={i: 'level{}'.format(i) for i in range(10)},
  5.         value=5,
  6.     ),

复选框:


   
  1. dcc.Checklist(
  2.     options=[
  3.         {'label''New York City''value''NYC'},
  4.         {'label''Montréal''value''MTL'},
  5.         {'label''San Francisco''value''SF'}
  6.     ],
  7.     values=['MTL''SF']
  8. )

MarkDown格式:


   
  1. dcc.Markdown('''
  2. Dash and Markdown
  3. Dash supports [Markdown](http://commonmark.org/help).
  4. Markdown is a simple way to write and format text.
  5. It includes a syntax for things like **bold text** and *italics*,
  6. [links](http://commonmark.org/help), inline `code` snippets, lists,
  7. quotes, and more.
  8. ''')

S5: 启动你的应用


   
  1. if __name__ == '__main__':
  2.     app.run_server(debug=True)

debug在调试的时候可以打开,部署在生产环境的时候记得改成Fasle,还有个参数use_reloader,如果你是在jupyter写代码,该参数需要设置成False。

最后附上我画的dashboard:


   
  1. 以上,便是今天的内容,希望大家喜欢,欢迎「转发」或者点击「在看」支持,谢谢各位。
  2. “扫一扫,关注Python乱炖”

文章来源: blog.csdn.net,作者:敲代码的灰太狼,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/tongtongjing1765/article/details/105721639

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。