- Python數據分析:基于Plotly的動態可視化繪圖
- 孫洋洋等
- 7字
- 2019-10-21 11:58:26
第1章 快速開始
1.1 Plotly簡介
Pandas(潘達思)數據分析軟件和Plotly互動式繪圖模塊可以稱為Python數據分析和Python量化分析兩大重量級模塊庫。
事實上,這兩者的影響力早已超越Python語言領域。
●Pandas目前已經被業界公認是大數據工程一線最好的解決方案。
●Plotly被稱為史上最好的繪圖工具之一,是GitHub開源網站最“火”的兩大新項目之一(另外一個是Netflix的Spinnaker云計算項目)。
為了更好地展示金融數據的復雜性,下面首先介紹Plotly繪圖模塊。如圖1-1所示是Plotly網站截圖,網址是https://plot.ly。

圖1-1 Plotly網站截圖
Python量化的關鍵是金融數據可視化,無論是傳統的K線圖,還是現在的互動策略分析,都需要大量的可視化圖表。具體到編程代碼,就是各種Python繪圖模塊庫,傳統Python繪圖模塊庫有Matplotlib、Ggplot、Seaborn、Bokeh等。
Plotly繪圖底層使用的是plotly.js, plotly.js基于D3.js、stack.gl(WebGL組件庫,由Plotly團隊的Mikola Lysenko帶領開發)和SVG,用JavaScript在網頁上實現類似MATLAB和Python Matplotlib的圖形展示功能,支持數十種圖形,包括2D和3D圖形,交互流暢,可以滿足一般科學計算的需要。該項目成功后,開始向其他語言移植,目前已經有Python、MATLAB、R語言、Jupyter等多種版本的API接口。
Plotly項目的創始人是Alex Johnson,是哈佛大學物理博士,曾經做過燃料電池。該項目的參與者中有一位華裔女生,叫Baobao Zhang(張寶寶),是耶魯大學政治學博士。Fernando Perez(IPython Notebook創始人)是該項目的顧問。
Plotly項目團隊在2013年就已經拿到數百萬美元的投資,并在加拿大蒙特利爾注冊了公司,公司名稱是科學數據云服務公司,號稱是“首個科學數據平臺”,提供線上和聯機服務,方便用戶使用分享、評論等功能,其投資商有MHS資本、西門子風險資本、Rho Ventures、Real Ventures和硅谷銀行等。
Plotly公司有很多大牌客戶,如西門子、Google、美國國家航天局(NASA)、美國空軍、華盛頓郵報、美國國家衛生研究院等。
Plotly公司的聯合創始人Jack Parmer這樣說過:對于開發者來說,繪制出漂亮的、交互式的圖表并將之分享是一件很容事的事,但是對于一般的用戶則很困難。Plotly改變了這種局面,借助互聯網的媒介、利用世界級的繪圖分析工具,每個人都可以參與其中。
Hacker News(極客新聞)網站曾經專門討論過各種圖形模塊庫,如Matplotlib、MPLD3、Bokeh、Highcharts、Flotcharts、MetricsGraphics、Vega、Chartjs、FusionCharts和JSXGraph。相比而言,Plotly功能齊全,性能顯著超過其他同類產品。
Plotly原本是收費的商業軟件,幸運的是,2016年6月,Plotly繪圖模塊庫提供了免費的社區版本,并新增了Python等多種編程語言的接口,以及離線模式支持,這對于廣大中國用戶而言,獲得了現實的技術支持。
Python繪圖模塊庫數不勝數,其中經典的有數十個。目前,Plotly作為新一代互動型量化繪圖庫,基本上可以說一統天下。如圖1-2所示是Plotly繪圖模塊庫部分內置的圖形類型。

圖1-2 Plotly繪圖模塊庫部分內置的圖形類型
筆者在編寫本書時,特別針對多種Python繪圖模塊庫進行了測試,測試結果表明,Plotly繪圖模塊庫的確是新一代Python繪圖模塊的王者之選,也是各種Web平臺的優先選擇繪圖模塊。
以筆者個人的測試感覺而言,Plotly繪圖模塊庫既有Matplotlib繪圖模塊庫的強大與靈活,又有Seaborn統計繪圖模塊庫的現代配色組合與優雅報表形態。
Plotly繪圖模塊庫可直接生成PNG等圖像文件,與Bokeh繪圖模塊庫和各種基于Web的JavaScript圖表模塊庫類似,生成的是一個內置JavaScript腳本的HTML網頁文件,雖然文件比Bokeh繪圖模塊庫生成的文件略大,但在互動性方面,Plotly繪圖模塊庫強大得多。
在3D圖表方面,雖然筆者沒有實際測試,但基于Plotly網站的案例可以看出,相對傳統Python 3D圖表模塊庫,無論在圖表種類格式,還是色彩組合方面,Plotly繪圖模塊庫都顯得更加靈活和強大。
圖1-3所示是Plotly繪圖模塊庫繪制的K線圖,支持互動功能,讀者可以參考Top極寬量化社區的演示網頁(http://www.ziwang.com/zwdemo.htm)。

圖1-3 Plotly繪圖模塊庫繪制的K線圖
請注意,案例中沒有使用任何圖片,是純JavaScript腳本函數,所有的圖形、數據和互動都是通過JavaScript函數完成的,這些JavaScript函數全部是通過Python自動生成的。
圖1-3雖然是靜止的,但在瀏覽器中,其實是純JavaScript腳本的函數圖形,支持各種互動功能,讀者可以好好體會一下,并且看看網頁源碼。
Plotly原本是基于JavaScript的數據圖表分析繪制模塊庫,在編程的靈活性和圖表的豐富性方面非常強大,優點數不勝數。
●Plotly本身是一款獨立的Web版數據可視化工具,界面友好,提供強大的互動性操作。
●基于現代的配色組合和圖表形式,相比Matplotlib、R語言的圖表,更加現代和絢麗。
●具有簡單且強大的3D圖表繪制功能,支持多種格式。
●對圖形參數的修改十分簡單、直觀,便于初學者使用。
●有Python、R、MATLAB、Jupyter、Excel等多種版本的接口。
●與Pandas(潘達思)數據分析軟件無縫集成,并提供了專門的Plotly繪圖模塊庫,設計的圖表非常吸引人,而且具有高度互動性,這得益于其完善的文檔和簡單的Python API,用戶入門也很容易,
目前,Plotly繪圖模塊庫支持的圖表格式如下。
●基本圖表:20種。
●統計和海運方式圖:12種。
●科學圖表:21種。
●財務圖表:2種。
●地圖:8種。
●3D圖表:19種。
●報告生成:4種。
●連接數據庫:7種。
●擬合工具:3種。
●流動圖表:4種。
隨著Plotly繪圖模塊庫軟件的升級與更新,未來會增加更多的圖表格式。
Plotly底層使用的是plotly.js,支持Python、R、MATLAB、JavaScript這四種語言的擴展,由于Python正處于數據分析領域的領先地位,并且其重要性呈日漸上升之勢,所以本書介紹Plotly時以Python語言(Python 3)為主,同時也會給出Plotly在其他語言中的一些應用。
Plotly發展很快,其應用的領域也非常廣泛,不但應用在傳統意義上的數據分析與處理上,而且在網頁開發、程序GUI、機器學習等多個方面也有重要的應用。由于這個原因,本書涉及的內容很廣,除Plotly基礎知識外不會做太多深入的介紹,僅進行入門介紹,讀者可以結合基礎知識部分進行更深入的研究,這對于絕大部分讀者來說并不是什么難事。
對于本書前半部分的基礎知識內容,并不需要讀者對Python有太多的了解,沒有學過Python的讀者只需要花費兩個小時了解Python的基礎語法就可以了。本書后半部分的內容,讀者可以按照自己的實際需求閱讀相關的章節,然后稍微修改一下就可以進行實戰,通過這種方式快速掌握這些技能。
- Python絕技:運用Python成為頂級數據工程師
- Voice Application Development for Android
- 新型數據庫系統:原理、架構與實踐
- PySpark大數據分析與應用
- Hadoop與大數據挖掘(第2版)
- 大數據導論
- 數據庫原理與應用(Oracle版)
- MySQL 8.x從入門到精通(視頻教學版)
- 從0到1:JavaScript 快速上手
- LabVIEW 完全自學手冊
- Hadoop集群與安全
- 探索新型智庫發展之路:藍迪國際智庫報告·2015(上冊)
- SQL Server深入詳解
- 區塊鏈+:落地場景與應用實戰
- Visual Studio 2012 and .NET 4.5 Expert Development Cookbook