ECharts+Python 給你的數據做「美顏」
本文授權轉載自公眾號:挖地兔(waditu)
前言
最近無意中看到一篇文章,介紹的是在IPython Notebook里實現ECharts的可視化效果。我個人對ECharts一直是推崇有加,是baidu發布的開源項目中我比較喜歡的一個,絕對是良心之作了。所以,看到這篇文章著實小激動了一把。
今天借花獻佛,利用金融證券數據,舉幾個小例子,給大家分享一下實現過程。順便告訴大家,怎麼在tushare里調用前十大股東及流通股東數據的介面。
1. ECharts介紹
以下摘自ECharts官網的介紹:
ECharts,一個純 Javascript 的圖表庫,可以流暢的運行在 PC 和移動設備上,兼容當前絕大部分瀏覽器,底層依賴輕量級的 Canvas 類庫 ZRender,提供直觀,生動,可交互,可高度個性化定製的數據可視化圖表。
ECharts 3 中更是加入了更多豐富的交互功能以及更多的可視化效果,並且對移動端做了深度的優化。
ECharts的成名,得益於幾年前百度人口遷徙大數據效果的展示,當年看到那個基於地圖連線忽閃忽閃的效果,簡直了,太高大上了。最近一年在北京偶爾拜訪一些所謂的大數據公司,進門顯眼位置看見的那些大屏幕數據展示,估計很多都是基於ECharts開發的。
更多效果實例可上官網看:
ECharts Examples
2. 與Python的結合
ECharts主要是應用在web和app領域,跟Python應用的結合,目前在Django,Flask等web框架里更為常見。今天要介紹的,也是在IPython Notebook里基於web的效果展示,而在IPython qtconsole等環境下似乎無能為力。
實際上,在IPython Notebook里使用ECharts相比純web開發環境,要複雜麻煩一些。但是在IPython Notebook里作為除matplotlib以外的數據可視化方案,ECharts或許可以成為一個強有力候補。尤其是在基於國內地圖、關係圖、桑基圖等方面的數據展示上,ECharts完全可以擔當大任,遊刃有餘。
3. 實現原理
在IPython Notebook里,有一個display的模塊,可以實現HTML效果的展示。而最核心的條件是notebook自帶一個JS模塊,可以通過RequireJS動態導入js腳本並執行。
我們先來看看HTML代碼在IPython notebook里簡單的實現效果:
通過RequireJS,引入ECharts包
然後配置echarts熟悉和數據
4. 圖表效果實例
這裡只給大家展示K線圖、折線圖和餅圖的效果,只揭示實現原理和過程,具體的代碼優化和圖表功能的完善,可以自行研究ECharts的相關資料來改進。
要實現這三類圖表,這裡借用股票日線行情數據、前十大股東持股佔比數據和前十大流通股東持股比例來舉例。(請將tushare升級到最新版。)
1、K線圖效果
通過tushare的get_k_data獲取日線前復權數據,這裡通過中國聯通來演示。根據上文的實現原理,我們運行代碼後可以看到如下效果。
2、折線圖效果
演示的折線圖效果實際是我選用了關係圖進行了改造,常規的折線圖大家可以參考ECharts官網的代碼。
這裡我用到了tusahre的新數據介面「十大流通股東」數據來做演示,數據包括了前十大股東和十大流通股東歷年各季度的持股數量和佔比。折線圖我用前十大股東歷年持股佔比情況來演示。
根據線圖實現的代碼,運行後,效果如下:
3、餅圖效果
餅圖用到了前十大流通股數據,選用浦發銀行2016年第三季度的數據作為示例。
對前十大流通股東數據安裝ECharts數據格式進行處理,代碼大致如下:
完整執行後,可以看到最終效果圖。
5. 總結
ECharts實際可以大大豐富Python的圖表和展示效果。但是要想用好,需要對ECharts的用法有所了解,特別是要實現自定義的圖表的時候,更要對底層代碼進行研究。
這裡有三個應用方面的小技巧分享一下:
- 選定圖表後,在ECharts的官網裡進行代碼修改和效果調試,直到滿意。(如果有條件,這一步可以交給前端工程師)
- 根據已經完成的代碼模板,將數據部分在IPythong notebook里用經過了pandas和Python數據清洗處理後的數據進行替換。
- 如果在IPython notebook里無法出現圖表效果,檢查數據結構是否正確。可以將代碼和數據重新拷貝到ECharts的調試器里進行檢查。
6. 演示代碼獲取
已經將以上效果的所有代碼完整保存到了IPython Notebook格式的文件里,有興趣的朋友可以直接在本公眾號私信回復 圖表,自動獲取代碼文件下載地址。
歡迎有使用經驗的朋友提出寶貴意見,分享應用心得。
本文授權轉自tushare官方公眾號挖地兔(waditu)
其他文章及回答:
學習編程的過程中可能會走哪些彎路,有哪些經驗可以參考? - Crossin 的回答
你是如何自學 Python 的? - Crossin 的回答在這個看臉的時代,如何用 GUI 提高 python 程序的顏值? - Crossin的編程教室 - 知乎專欄今天,你搶到票了嗎 - Crossin的編程教室 - 知乎專欄Python 與 Excel 不得不說的事 - Crossin的編程教室 - 知乎專欄Python-Excel 模塊哪家強?- Crossin的編程教室 - 知乎專欄
爆款遊戲《貪吃蛇大作戰》的 Python 實現 - Crossin的編程教室 - 知乎專欄NBA 舉辦編程馬拉松 - 數據分析時代的到來 - Crossin的文章 - 知乎專欄想用 Python 做數據分析?先玩玩這個再說 - Crossin的文章 - 知乎專欄用 Python 實現你的量化交易策略 - Crossin的文章 - 知乎專欄Python 抓取網頁亂碼原因分析 - Crossin的編程教室 - 知乎專欄Crossin的編程教室
微信ID:crossincode
論壇:Crossin的編程教室QQ群:453300655推薦閱讀:
※Python--matplotlib 繪圖可視化練手--折線圖/條形圖
※Power BI應用場景賞析-銷售篇
※使用 ECharts GL 實現三維可視化 - 入門款
※R語言數據可視化之——TreeMap