- 數據可視化
- 蔣國銀等編著
- 3329字
- 2024-06-18 18:33:17
1.4 數據可視化的開發工具
1.4.1 常用工具
1.Excel
Microsoft Office是一套由微軟公司開發的辦公軟件套裝,它可以在Microsoft Windows、Windows Phone、Mac系列、iOS和Android等系統上運行。與其他辦公應用程序一樣,它包括聯合的服務器和基于互聯網的服務。Excel是Microsoft Office系列中的一個軟件,專門用于電子表格制作與分析。Excel有直觀的界面,內嵌出色的計算功能和圖表工具,是市場上較為流行的個人計算機數據處理軟件之一。
Excel擁有強大的函數庫,能快速創建各種數據圖(條形圖、餅圖、氣泡圖、折線圖、儀表盤圖以及編輯圖),是入門級的理想工具。但相比于專業圖形化軟件,Excel的圖形化功能并不算強大,調整圖表中的顏色、線條和樣式的范圍有限,十分難輸出較為專業的可視化圖表,尤其是多維圖形。
2.SPSS
SPSS(Statistical Product and Service Solutions)是一款統計產品與服務解決方案軟件,是由IBM公司推出的一系列用于統計分析運算、數據挖掘、預測分析和決策支持任務的軟件產品及相關服務的總稱,有Windows和mac OS X等版本。SPSS有專門的繪圖工具,可以根據數據繪制各種圖形[2]。
SPSS統計可視化圖形能夠簡潔、直觀地對主要的數據信息進行呈現,反映事物內在的規律和關聯。根據統計圖呈現變量的數量,可以將其分為單變量圖(直方圖、莖葉圖、箱圖、P-P圖、餅圖、條形圖、Pareto圖等)、雙變量圖(線圖、條形圖、馬賽克圖等)、多變量圖(三維散點圖等)。SPSS在常規圖中引入了更多的交互圖功能,例如:圖組(Paneled Charts),帶誤差線的分類圖形如誤差線條形圖和線圖;三維效果的簡單、堆積和分段餅圖等;也有人口金字塔和點密度圖等圖形。雖然SPSS擅長統計分析,也有較多圖表可視功能,但在輸出專業的可視圖表上也有一定的難度。
3.ECharts
ECharts(Enterprise Charts)是百度開發的一個開源的數據可視化工具,是一個基于JavaScript實現的開源可視化庫,提供直觀、生動、可交互、可個性化定制的數據可視化圖表。它可以流暢地運行在PC和移動設備上,兼容較多瀏覽器(IE、Chrome、Firefox、Safari等),底層依賴輕量級的矢量圖形庫(ZRender),提供拖拽重計算、數據視圖、值域漫游等功能,具有增強用戶體驗,提升數據挖掘、信息整合的能力。
ECharts提供常規的折線圖、柱形圖、散點圖、餅圖、K線圖,用于統計的盒形圖,用于地理數據可視化的地圖、熱力圖、線圖,用于關系數據可視化的關系圖、旭日圖,多維數據可視化的平行坐標,還有用于商務智能(Business Intelligence,BI)的漏斗圖或儀表盤,同時提供標題編輯、氣泡詳情、圖例、值域、數據區域、時間軸、工具箱等可交互組件,支持多圖表、組件的聯動和混搭展現[3]。
4.Tableau
Tableau幫助人們看到和理解數據,該分析平臺正在改變人們使用數據解決問題的方式。Tableau獨創VizQL技術,具有SQL查詢的綜合性功能,又兼顧業務人員的便捷易用需求,只需要拖曳,就能生成可視化圖形。Tableau在Tableau Desktop可視化工具的基礎上新增Tableau Prep Builder,彌補了敏捷數據整理的短板。Tableau已從可視化分析工具逐步發展成為企業級的數據可視化分析平臺。
Tableau定位數據可視化敏捷開發和實現的商務智能展現工具,具有以下核心優勢:支持廣泛的部署選擇、豐富的交互渠道、模塊化的產品組合、不斷開放的開發接口等[13]。雖然Tableau入門容易,但較難精通掌握。
5.R語言
許多數據科學家使用R語言進行數據分析,R語言及其許多可用的包幾乎為可以想象到的每種情況提供了許多不同形式的可視化。R語言具有豐富的作圖功能,通過借助第三方包,比如graphics、gplot、ggplot2、lattice等可視化包,可以實現數據可視化功能。在使用R語言進行數據可視化之前,需要下載好各種可視化包,然后加載使用,調用可視化包里面的函數功能。
使用R語言進行數據可視化,雖要編程實現,但比C++或JavaScript等許多語言都要簡單。因此,R語言并不太難學,但由于R語言最初是專門為統計學家和科學家設計的,因此入門門檻較高。
6.Python語言
和R語言一樣,Python語言以其大量的開放庫而聞名,有很多庫可以用于繪圖和可視化,如Matplotlib、Seaborn等。Python語言還擁有大量的機器學習庫,包括Scikit-learn、XGBoost、TensorFlow、Keras和PyTorch等。Python中的Pandas庫也可以兼容表格形式的數據,利用Pandas庫處理CSV或Excel數據非常容易。除此之外,Python還有很優秀的科學計算軟件包,比如Numpy庫可以幫助用戶瞬間完成復雜的數學計算,比如矩陣運算。所有這些包組合在一起,使Python語言成為專業級數據可視化的編程類流行工具。
Python語言的理念是強調代碼的可讀性和使編程變得簡單或簡潔,Python語言的設計者顯然做到了,因為這種語言非常容易學習。雖然Python語言的語法靈感來自C語言,但與C語言不同的是,它的實現并不復雜。因此,Python語言作為初學者的計算機編程語言學習首選,用戶可以在相對較短的時間內學會它。
由于Python語言在數據可視化方面的專業性和易學易用性,本書選擇基于Python語言的可視化工具,詳細介紹如何用Python實現數據可視化。
1.4.2 Python的數據可視化庫
下面介紹幾種常用的Python數據可視化庫。
1.Matplotlib
Matplotlib是Python數據可視化庫中的泰斗,盡管它已有十多年的歷史,但仍然是Python社區中使用最廣泛的繪圖庫,通過Matplotlib可以很方便地繪制二維、三維圖表。但是在Matplotlib的使用過程中,也會受到圖標控制參數不統一的困擾,如plot()函數參數中顏色參數用color,而散點圖scatter()函數則用c[14]。
Matplotlib具有使用簡單繪圖語言實現復雜繪圖、以交互式操作實現精細繪圖、對圖表的組成元素進行精細化控制等主要特點[15]。雖然Matplotlib使用起來有些復雜,上手有一定難度,但是它具有強大的數據可視化功能,因此,后來陸續出現的很多第三方庫都是建立在Matplotlib庫的基礎上,有些甚至直接調取Matplotlib庫中的方法,例如Pandas庫、Seaborn庫[16]。
2.Seaborn
Seaborn與Matplotlib一樣,也是Python進行數據可視化的重要的第三方包。Seaborn是基于Matplotlib的圖形可視化包,它在Matplotlib的基礎上進行了更高級的API封裝,提供了一種高度交互式界面,從而使得作圖更加容易。我們用Seaborn能輕易做出各種有吸引力的統計圖表。
Seaborn在Matplotlib的基礎上,側重于數據統計分析圖表的繪制,包括帶誤差線的柱形圖和散點圖、箱體圖、小提琴圖、統計直方圖與核密度估計圖等。和Matplotlib繪圖相比,Seaborn利用Matplotlib的強大功能,有以下幾個優勢:一是幾行代碼就能創建漂亮的圖表;二是Seaborn可以快速設定圖表顏色、主題和風格,以更美觀、更現代的調色板進行可視化設計;三是Seaborn有圖表分面展示[14]。
3.Bokeh
Bokeh是一個專門針對Web瀏覽器呈現功能的交互式可視化Python庫,支持現代化Web瀏覽器展示(圖表可以輸出為JSON對象、HTML文檔或者可交互的網絡應用),這是Bokeh與其他可視化庫最核心的區別。Bokeh提供風格優雅、簡潔的D3.js圖形化樣式,并將此功能擴展到高性能交互的數據集、數據流上。使用Bokeh可以快速便捷地創建交互式繪圖、儀表板和數據應用程序等[4]。
Bokeh基于The Grammar of Graphics,源自原生Python,而不是從R語言移植過來的。它的優勢在于能夠創建交互式網站圖,可以很容易地輸出為JSON對象、HTML頁面或交互式Web應用程序[5]。其缺點是語法較復雜,不易上手。Bokeh提供三種不同的控制水平:最高級的控制管理水平可以幫助開發者快速地繪制常用圖形,比如直方圖、散點圖等;中等的控制管理水平,與Matplotlib庫原理相同,允許開發者控制圖像的基本元素信息;最低級的控制管理水平主要是針對高端的開發者,需要定義圖表中的每個元素[16]。
4.Plotly
Plotly是一個開源的、交互式和基于瀏覽器的Python圖形庫,可以創建在儀表板或網站上使用的交互式圖表(可以將它們保存為HTML文件或靜態圖像)。Plotly基于plotly.js,而plotly.js又基于D3.js,因此它是一個高級圖表庫。Plotly的優勢在于制作交互式圖,包含了超過30多種圖表類型,提供了一些在大多數庫中沒有的圖表,如等高線圖、樹狀圖、科學圖表、3D圖表、金融圖表等。Plotly繪制的圖能直接在jupyter notebook中查看,也能保存為離線網頁,或者保存在http://plot.ly云端服務器內,以便在線查看[6]。雖然Plotly功能較多,但Plotly的部分功能需付費使用。
5.Pyecharts
Pyecharts是基于Echarts開發的,是一個用于生成Echarts圖表的類庫。Echarts是一個百度開源的數據可視化JS庫,憑借著良好的交互性、精巧的圖表設計,得到了眾多開發者的認可。更重要的是,該庫的文檔全部用中文撰寫。Pyecharts實際上就是Echarts與Python的對接。
Pyecharts有支持交互式展示與點擊、默認生成的樣式美觀、詳細的中文文檔與Demo、對中文開發者友好等特點。但Pyecharts不支持使用Pandas中的Series數據,需要將其轉換為List數據才可以使用。
6.功能對比[7]
表1-1為Matplotlib、Seaborn、Bokeh、Plotly和Pyecharts在圖形輸出功能上的對比。
表1-1 Matplotlib、Seaborn、Bokeh、Plotly和Pyecharts的功能對比

注:〇表示支持不是很好;●表示支持較好;空白表示不支持。
由表1-1可以得出的結論是,Matplotlib可以制作基本圖表、3D和多子圖,但動畫功能有限;Seaborn是Matplotlib的封裝,功能比較有限,主要用于基本圖表;Bokeh的控件功能比較多,但在繪制3D和動畫圖時要裝插件;Pyecharts雖然動畫好看,但是控件無法定制;和其他4個庫相比,Plotly在功能上較為完善。