前言
之前一直是使用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)
結果如下
基本上,只要仔細觀察對應的位置,你就明白這個是怎麼寫的,剛開始可能代碼不熟悉,但是到最後基本上就可以啦