前言
之前一直是使用R语言的shiny,今天就来写一些dash,因为感觉plotly的dash比shiny更加强大,可能是因为语言的本身的原因,python就是比R语言灵活,强大
先介绍如何安装吧,
安装包
我使用的就是win10上的anaconda的python3.7
然后使用pip安装,pip install dash
接下来,就是写代码,
这个代码主要也就是分成以下几块:
导入包
这里导入包不像是R语言的shiny,这里要导入三个部分
import dash
import dash_core_components as dcc
import dash_html_components as html
设置风格
在写dash之前,还要添加一些风格,
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
也就是说,以后,我们都是在这个app上面加东西,改东西
其实这样还是很简单的
添加内容
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={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': "SF"},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': 'dhl'}, ],
'layout': {
'title': "Dash Data Visualization"
}
}
)
])
观察函数可以看到,我们在app后面加入了一个layout,然后layout后面使用的是html.Div这个函数,这个函数里面的children传递的是一个裂变,主要不断地在这个列表里面加入组件就可以。
这个列表里面有html.H1、html.Div、dcc.Graph。你只要知道这个写都是要添加的对象就行了,每一个对象控制一个部分或者显示一个部分。我感觉这个还是很灵活的,children后面可以传入任何东西,只要符合条件,基本上都符合。
到最后,就会看到h1就是输出标题,div也是一个小的块的标题,然后graph画出来的东西就是一个图标,这个图标里面为什么这么设计,主要就是为了传递参数用的。
运行函数
最后函数写好了,就开始运行函数,代码如下:
if __name__ == "__main__":
app.run_server(debug=True)
结果如下
基本上,只要仔细观察对应的位置,你就明白这个是怎么写的,刚开始可能代码不熟悉,但是到最后基本上就可以啦