使用Dash开发交互式数据可视化网页--页面布局

Dash应用布局

后续的操作前,需要安装如下Python包

pip install dash==0.20.0  # The core dash backend
pip install dash-renderer==0.11.2  # The dash front-end
pip install dash-html-components==0.8.0  # HTML components
pip install dash-core-components==0.18.1  # Supercharged components
pip install plotly --upgrade  # Plotly graphing library used in examples

使用Dash生成HTML

Dash应用包括两个部分,应用布局(layout)和数据交互(interactivity)。其中布局部分用来展示数据以及引导使用者使用。Dash提供了dash_core_componentsdash_html_components, 以类的方式对HTML和JS进行封装,便于调用。下面先构建一个最简单的布局

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(children=[
    html.H1(children = 'Hello Dash'),
    html.Div(children = '''
        Dash: A web application frameworkd for Python.
        '''),
    dcc.Graph(
        id = 'example-graph',
        figure = {
            'dash':[
                {'x': [1,2,3], 'y':[4,1,2], 'type':'bar', 'name':'SF'},
                {'x': [1,2,3], 'y':[2,4,5], 'type':'bar', 'name':'Montrel'},
                ],
            'layout':{
                'title':'Dash data Visualization'
                }
            }
        )
])

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

首先用app=dash.Dash()创建了Dash应用的实例,这个实例可以通过app.run_server()运行。

其次这个应用的布局(layout)由html组件(html.Div等)和图形组件(dcc.Graph等)构成。其中基础的html标签来自于dash_html_components,而更加React.js库里的高级组件则是由dash_core_components提供。

最后的展示形式需要后期慢慢的调整, 比如说调整一下字体对齐, 字体颜色和背景颜色等

import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

colors = {
        'background':'#111111',
        'text':'#7FDBFF'
}

app.layout = html.Div(style={'backgroundColor':colors['background']},
    children=[
    html.H1(
        children = 'Hello Dash',
        style = {
            'textAlign':'center',
            'color': colors['text']
            }
        ),
    html.Div(children = '''
        Dash: A web application frameworkd for Python.
        ''', style = {
            'textAlign':'center',
            'color': colors['text']
            }
        ),
    dcc.Graph(
        id = 'example-graph',
        figure = {
            'data':[
                {'x': [1,2,3], 'y':[4,1,2], 'type':'bar', 'name':'SF'},
                {'x': [1,2,3], 'y':[2,4,5], 'type':'bar', 'name':'Montreal'},
                ],
            'layout':{
                'plot_bgcolor': colors['background'],
                'paper_bgcolor': colors['background'],
                'font':{
                    'color': colors['text']
                    },
                'title':'Dash data Visualization'
                }
            }
        )
])

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

这里的html组件都设置了style,用来调整样式,

可视化

dash_core_components库中有一个Graph组件,它利用开源的JavaScript图形库--plotly.js进行交互式数据渲染。Graph里的figure参数等价于plotly.py里的figure参数,即任何plotly.js支持的图形都可以用dash_core_components调用。查看https://plot.ly/python/了解更多plotly.py的图形。

比如说这里可以基于Pandas的数据库创建散点图

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
import pandas as pd

app = dash.Dash()

df = pd.read_csv(
    'https://gist.githubusercontent.com/chriddyp/' +
    '5d1ea79569ed194d432e56108a04d188/raw/' +
    'a9f9e8076b837d541398e999dcbac2b2826a81f8/'+
    'gdp-life-exp-2007.csv')

plot = [dcc.Graph(
        id = 'life-exp-vs-GDP',
        figure = {
            'data':[
                go.Scatter(
                    x=df[df['continent'] == i]['gdp per capita'],
                    y=df[df['continent'] == i]['life expectancy'],
                    text=df[df['continent'] == i]['country'],
                    mode='markers',
                    opacity=0.7,
                    marker={
                        'size':15,
                        'line':{'width':0.5, 'color':'white'}
                    },
                    name = i
                ) for i in df.continent.unique()
            ],
            'layout': go.Layout(
                xaxis={'type':'log','title':'GDP per Capita'},
                yaxis={'title':'Life Expectancy'},
                margin={'l':40,'b':40,'t':10,'r':10},
                legend={'x':0, 'y':1},
                hovermode='closest'
            )
        }
    )]

app.layout = html.Div(
    html.Div(children=[
        html.Div(className='col-md-4'),
        html.Div(plot,className='col-md-4')],
        className='row'
    )
)

# Append an externally hosted CSS stylesheet
my_css_url = "https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
app.css.append_css({
    "external_url": my_css_url
})

# Append an externally hosted JS bundle
my_js_url = 'https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js'
app.scripts.append_script({
    "external_url": my_js_url
})

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

这部分代码将图形部分的代码从html组件中抽离出来,写完之后,再添加到html总体组件中。此外还增加了bootstrap的css样式。

Markdown语法

Dash的dash_html_components支持原生的HTML语句,而dash_core_componentsMarkdown提供了Markdown得渲染。

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

markdown_text = '''
### Dash and Markdown

Dash apps can be written in Markdown.
Dash uses the [CommonMark](http://commonmark.org/)
specification of Markdown.
Check out their [60 Second Markdown Tutorial](http://commonmark.org/help/)
if this is your first introduction to Markdown!
'''

app.layout = html.Div([
    dcc.Markdown(children=markdown_text)
])

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

dash_core_components里不仅仅提供了Markdown, graphs这些图形组件,还支持下拉栏等其他使用工具,可在https://plot.ly/dash/dash-core-components进一步了解

小节

这部分主要是学习了Dash应用得layout. layout是不同组件的层级关系树,最后结果是html页面。html页面的HTML基本语法由dash_html_components提供,而高级的绘图和下拉栏等则是由dash_core_components提供.

参考资料:

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,有很多关于交互式数据大屏的 Python 案例。 一些常用的库可以制作交互式数据大屏,如 Plotly、Bokeh、Dash。 这些库可以制作多种图表,包括条形图、散点图、折线图等,并且可以与用户进行交互,比如可以动态调整图表的大小、颜色等。 如果你想学习如何制作交互式数据大屏,可以参考官方文档或搜索一些教程。 可以结合您的数据进行实际操作,以便对如何使用这些库有更深入的了解。 ### 回答2: 是的,有许多基于Python交互式数据大屏案例。Python是一种功能强大的编程语言,具有丰富的数据分析和可视化工具。以下是一些常见的交互式数据大屏Python案例: 1. 使用Plotly库创建交互式数据大屏:Plotly是一个用于创建漂亮的交互式图表和数据可视化的库。您可以使用Plotly创建各种图表,如折线图、散点图、热图等,并将其集成到数据大屏中。通过添加事件处理器和交互式控件,用户可以与数据进行交互,探索和分析数据。 2. 使用Dash库创建交互式数据大屏:Dash是一个基于Python的Web应用框架,用于构建交互式数据大屏。您可以使用Dash数据可视化组件(如图表、表格)和HTML组件结合起来,创建具有交互功能的数据大屏。Dash还提供了丰富的布局和样式选项,使您能够定制数据大屏的外观和布局。 3. 使用Bokeh库创建交互式数据大屏:Bokeh是一个用于构建交互式数据可视化Python库。它提供了丰富的图表类型和数据可视化工具,支持交互式控件(如滑块、下拉菜单)和回调函数,使用户能够与数据进行互动和探索。 这些案例都是基于Python交互式数据大屏的示例,通过这些工具,您可以根据需要创建交互式和可视化效果丰富的数据大屏。无论是用于数据分析、数据监控、数据展示还是决策支持,这些工具都可以帮助您实现出色的交互式数据大屏项目。 ### 回答3: 是的,有许多交互式数据大屏的Python案例。Python作为一种功能强大且易于使用的编程语言,被广泛应用于数据可视化和大屏展示领域。 其中一个著名的案例是使用PythonDash框架创建交互式数据大屏。Dash是基于React.js和Flask的组合而成的框架,可以帮助用户快速构建交互式数据可视化应用。通过Dash,用户可以使用Python编写代码来定义各种数据图表、数据表格和交互控件,从而构建出具有丰富交互功能的数据大屏。 另一个常见的案例是使用Python的Bokeh库创建交互式数据大屏。Bokeh是一个用于数据可视化Python库,可以生成具有高度交互性的图形和图表。通过Bokeh,用户可以使用Python语法定义数据图表的各种属性,并为图表添加交互工具(如缩放、平移、选择等),使得用户能够自由地探索和分析数据。 此外,还有其他许多Python库和框架可用于创建交互式数据大屏,如Plotly、Matplotlib和Streamlit等。这些工具可以帮助用户以更直观、可交互的方式展示数据,从而更好地传达信息和洞察力。 总之,交互式数据大屏的Python案例非常丰富,用户可以根据自己的需求和技术水平选择适合自己的库或框架来实现交互式数据大屏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值