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

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

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


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

640.png



需要安装的库:

pip install plotly
pip install dash


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

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

import dash
import dash_core_components as dcc
import dash_html_components as html
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(children=[
    html.H1(children='Dash Demo', style={"text-align": "center"}),
    html.Div(children='''
        一款牛逼的Python开发的应用程序---------Dash
    ''',
             style={"text-align": "center", "color": "red"}),
    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [3, 4, 2], 'type': 'bar', 'name': '数据源A'},
                {'x': [1, 2, 3], 'y': [2, 3, 5], 'type': 'bar', 'name': '数据源B'},
            ],
            'layout': {
                'title': '数据展示'
            }
        }
    )
])
if __name__ == '__main__':
    app.run_server(debug=True)


运行效果:

640.png


下面来说明一下,如何去使用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

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

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


S3: 添加你画的图


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

dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [3, 4, 2], 'type': 'bar', 'name': '数据源A'},
                {'x': [1, 2, 3], 'y': [2, 3, 5], 'type': 'bar', 'name': '数据源B'},
            ],
            'layout': {
                'title': '数据展示'
            }
        }
    )

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

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

import plotly.graph_objects as go
fig = go.Figure(data=
        go.Contour(
            z=[[10, 10.625, 12.5, 15.625, 20],
               [5.625, 6.25, 8.125, 11.25, 15.625],
               [2.5, 3.125, 5., 8.125, 12.5],
               [0.625, 1.25, 3.125, 6.25, 10.625],
               [0, 0.625, 2.5, 5.625, 10]]
        ))
......... dcc.Graph(
        id='example-graph',
        figure=fig
    )

640.png


添加多个图:


640.png


S4: 添加常见的网页控件

输入框:

dcc.Input(id='my-id',
              value='2333',
              type='text'
              ),


640.png

下拉框:

dcc.Dropdown(
        options=[
            {'label': 'New York City', 'value': 'NYC'},
            {'label': 'Montréal', 'value': 'MTL'},
            {'label': 'San Francisco', 'value': 'SF'}
        ],
        value='MTL'
    ),

640.png



滑动条:

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


复选框:

dcc.Checklist(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    values=['MTL', 'SF']
)

MarkDown格式:

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


S5: 启动你的应用

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

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

最后附上我画的dashboard:

640.png

相关文章
|
16天前
|
前端开发 JavaScript API
解锁高效应用构建:Vuex与后端交互的前端状态同步策略,让数据流动如行云流水,紧跟前端开发的热点趋势
【8月更文挑战第27天】本文深入探讨了Vue框架下的前端状态管理库Vuex与后端服务交互时的状态同步策略。通过剖析Vuex的核心机制——状态(State)、变异(Mutation)、动作(Action)及模块(Module),文章展示了如何优雅地将后端数据加载并更新至前端状态中。特别地,借助示例代码解释了Action处理API调用、Mutation更新状态的过程,并介绍了如何通过模块化和命名空间提高状态管理的准确性和时效性。此外,还讨论了组件如何利用`mapState`和`mapActions`简化状态访问与操作的方法。遵循这些策略,开发者可以在构建复杂应用时显著提升性能与用户体验。
27 0
|
16天前
|
JSON 前端开发 API
构建前端防腐策略问题之更新getMemoryUsagePercent函数以适应新的API返回格式的问题如何解决
构建前端防腐策略问题之更新getMemoryUsagePercent函数以适应新的API返回格式的问题如何解决
构建前端防腐策略问题之更新getMemoryUsagePercent函数以适应新的API返回格式的问题如何解决
|
16天前
|
缓存 前端开发 数据格式
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
|
16天前
|
存储 缓存 前端开发
构建前端防腐策略问题之防腐层帮助前端实现稳定性兜底难的问题如何解决
构建前端防腐策略问题之防腐层帮助前端实现稳定性兜底难的问题如何解决
|
16天前
|
前端开发 API 开发者
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
|
16天前
|
前端开发 JavaScript
构建前端防腐策略问题之后端配合前端进行GraphQL改造变得不太现实的问题如何解决
构建前端防腐策略问题之后端配合前端进行GraphQL改造变得不太现实的问题如何解决
|
11天前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
19 0
|
13天前
|
JavaScript 前端开发 API
解锁前端开发新境界:Vue.js携手Webpack,打造高效构建流程,你的项目值得拥有!
【8月更文挑战第30天】随着前端技术的发展,模块化与组件化趋势愈发显著。Vue.js 以其简洁的 API 和灵活的组件系统,深受开发者喜爱;Webpack 则凭借强大的模块打包能力成为前端工程化的基石。两者结合,不仅简化了组件编写与引用,还通过模块热替换、代码分割等功能大幅提升开发效率。本文将通过具体示例,展示如何利用 Vue.js 和 Webpack 构建高效、有序的前端开发环境。从安装配置到实际应用,逐步解析这一组合的优势所在。
32 0
|
13天前
|
JavaScript 前端开发 UED
【绝技大公开】Vue.js高手教你如何从零到英雄,构建梦幻电商平台前端!
【8月更文挑战第30天】本文通过对比传统网页开发方式,介绍了使用Vue.js及其生态构建电商平台前端的方法。从初始化项目到配置路由、状态管理,再到实现首页、商品列表与详情页,每个环节都提供了具体代码示例,展示了Vue.js在提升开发效率与应用可维护性方面的优势。适合希望了解现代前端技术栈的开发者阅读。通过本教程,读者可以学习到如何利用Vue Router、Vuex等工具搭建完整的Web应用。
6 0
|
16天前
|
缓存 前端开发
构建前端防腐策略问题之引入前端防腐层是否总是合理
构建前端防腐策略问题之引入前端防腐层是否总是合理