從事數據科學工作,少不了使用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/