從事數據科學工作,少不了使用Pandas、scikit-learn這些Python生態系統中的利器,還有就是控制工作流的Jupyter Notebooks,沒的說,你和同事都愛用。但是,要想將工作成果分享給不會用這些工具的人,那該怎么辦?怎么才能構建一個人人都能夠輕松上手的界面,操控數據和可視化?以前,為實現這一目的,需要一個精通Javascript的專職前端團隊來搭建GUI,以后就用不着啦。
今年發布的Dash是在純Python環境中構建數據可視化Web APP的開源庫。該庫基於Flask、Plotly.js和React構建,提供抽象層,無需學習上述框架即可快速上手開發。它在瀏覽器中進行渲染和響應,因此適用移動端。
如果你想知道Dash都能實現什么效果,這個樣例庫可以讓你大飽眼福。
pip install dash
pip install dash-renderer
pip install dash-html-components
pip install dash-core-components
#!/usr/bin/env python
# Version = 3.5.2
# __auth__ = '無名小妖'
import dash
import dash_core_components
import dash_html_components
import numpy
t = numpy.linspace(0, 2 * numpy.pi, 100)
x = 10 * (2 * numpy.sin(t) - numpy.sin(2 * t))
y = 10 * (2 * numpy.cos(t) - numpy.cos(2 * t))
app = dash.Dash()
app.layout = dash_html_components.Div(children=[
dash_html_components.H1(children='Hello! Dash love you! '),
dash_core_components.Graph(
id='heart-curve',
figure={
'data': [
{'x': x, 'y': y, 'type': 'Scatter', 'name': 'Heart'},
],
'layout': {
'title': 'Heart Curve'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
運行:

eg2.
#!/usr/bin/env python
# python2.7
# -*- coding: utf8 -*-
import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
from datetime import datetime as dt
import tushare as ts
app = dash.Dash()
app.layout = html.Div([
html.H1('k-30'),
dcc.Dropdown(
id='my-dropdown',
options=[
{'label': '愛柯迪', 'value':'600933'},
{'label': '贛鋒鋰業', 'value':'002460'},
{'label': '中國神華', 'value':'601088'},
{'label': '廣汽集團', 'value':'601238'},
{'label': '春秋航空', 'value':'601021'},
],
value='600933'
),
dcc.Graph(id='my-graph')
])
@app.callback(Output('my-graph', 'figure'), [Input('my-dropdown', 'value')])
def update_graph(selected_dropdown_value):
# df = web.DataReader(
# selected_dropdown_value, data_source='yahoo',
# start=dt(2018, 1, 1), end=dt.now()
# )
df = ts.get_k_data(selected_dropdown_value, ktype='30')
return {
'data': [
{
'x': df.index,
'y': df.close
}
]
}
if __name__ == '__main__':
app.run_server(host="0.0.0.0")


其他參考:
http://blog.csdn.net/hu_zhenghui/article/details/78378844
http://blog.csdn.net/zhangjianjaEE/article/details/76572327
https://pypi.python.org/pypi/django-dash/
