李俊華
(哈爾濱廣廈學(xué)院 信息學(xué)院,黑龍江 哈爾濱 150025)
可視化是借助圖形化的方法,清晰有效的將數(shù)據(jù)展示出來。數(shù)據(jù)可視化的方法及工具有很多,例如少量數(shù)據(jù)較為常用的Excel,以及PowerPoint等均可實(shí)現(xiàn)數(shù)據(jù)的可視化。對(duì)于不斷發(fā)展的大數(shù)據(jù)的今天,Python的使用越來越受到關(guān)注。其豐富的第三方庫更是滿足了不同需求的應(yīng)用[1]。本文簡單介紹可視化類型的選擇,以及介紹了幾款Python對(duì)于可視化的第三方庫及其應(yīng)用場景,重點(diǎn)介紹pyecharts的使用,并通過pyecharts實(shí)現(xiàn)了幾款精美的可視化圖形實(shí)例,包括餅圖,柱狀圖,流動(dòng)圖及熱力圖,為學(xué)習(xí)數(shù)據(jù)可視化的讀者提供參考[2]。
可視化是借助圖形化的方法,清晰有效地將數(shù)據(jù)展示出來。當(dāng)有可視化需求時(shí),首先要了解需求時(shí)什么,從而選擇合適的可視化圖形。比如,展示兩個(gè)維度的可視化圖形有很多,包括散點(diǎn)圖、折線圖、柱狀圖等等。根據(jù)需求的確定,從而選擇最合適的圖形可視化。例如,需求是查看“半年內(nèi)的銷售情況”。由此需求可以確定這里會(huì)涉及兩個(gè)維度進(jìn)行展示,一個(gè)維度是時(shí)間序列(半年即6個(gè)月),另一個(gè)維度是每個(gè)月的銷量。因此,從眾多兩個(gè)維度的可視化圖形中,選擇折線圖更為合適,因?yàn)槠溥m合展示連續(xù)的時(shí)間序列數(shù)據(jù)。通過折線圖,可以清晰的觀察出銷量隨時(shí)間的變化情況[3]。
每一種可視化都有其適合的應(yīng)用場合,需要在明確了想要展示的信息之后來合理地選擇可視化類型。這里簡單總結(jié)如下:
(1)想要展示數(shù)據(jù)的分布情況,可以選擇散點(diǎn)圖、箱型圖、柱狀圖和直方圖;(2)想要展示數(shù)據(jù)的變化趨勢,可以選擇折線圖和雙軸圖;(3)想要展示對(duì)比效果,可以選擇柱狀圖、餅圖和雷達(dá)圖;(4)想要展示數(shù)據(jù)的部分與整體的關(guān)系,可以選擇面積圖、餅圖、旭日?qǐng)D、堆積柱狀圖和矩形樹圖;(5)想要展示數(shù)據(jù)之間的關(guān)系,可以選擇散點(diǎn)圖、氣泡圖和桑基圖;(6)想要展示文本信息的重點(diǎn),可以選擇詞云圖;(7)想要展示流程中每一步的轉(zhuǎn)化情況,可以選擇漏斗圖。
除了選擇好合適的圖形之外,還要考慮可視化的配色及靜態(tài)或動(dòng)態(tài)效果等,以此來更好的完成數(shù)據(jù)可視化。篇幅原因,這里不再贅述。
Python為數(shù)據(jù)可視化提供了很好的支持。Python強(qiáng)大的第三方庫更是為不同數(shù)據(jù)可視化需求及不同領(lǐng)域提供了支持。這里簡單介紹幾個(gè)不同領(lǐng)域的Python數(shù)據(jù)可視化庫。
Matplotlib是Python數(shù)據(jù)可視化庫的元老,已有十多年的歷史,使用范圍仍然很是廣泛。它的設(shè)計(jì)非常類似于MATLAB。
Seaborn是在Matplotlib之上構(gòu)建的,其利用Matplotlib的強(qiáng)大功能,可以只用幾行代碼就可創(chuàng)建美觀的圖表。
ggplot基于ggplot2(一個(gè)R語言繪圖系統(tǒng)),它的運(yùn)行方式與Matplotlib不同,它允許對(duì)其組件進(jìn)行分層來創(chuàng)建完整的繪圖。例如,可以先從軸開始畫,然后再添加點(diǎn),添加線、趨勢線等。
Bokeh基于The Grammer of Graphics,它的優(yōu)勢在于能夠創(chuàng)建交互式的網(wǎng)站圖,它可以很容易地輸出為JSON對(duì)象、HTML或交互式web應(yīng)用程序。同時(shí)還支持流媒體和實(shí)時(shí)數(shù)據(jù)。
與Bokeh一樣,Plotly的強(qiáng)項(xiàng)在于制作交互式圖,但它提供了一些在大多數(shù)庫中沒有的圖表,如等高線圖,樹狀圖和3D圖表。
geoplotlib是一個(gè)用于創(chuàng)建地圖和繪制地理數(shù)據(jù)的工具庫。可以使用它來創(chuàng)建各種地圖類型,例如等值線,熱圖和點(diǎn)密度貼圖[4]。
pyecharts是一個(gè)用于生成Echarts圖表的類庫。Echarts是百度開源的一個(gè)數(shù)據(jù)可視化JS庫,主要用于數(shù)據(jù)可視化。pyecharts實(shí)際上就是Echarts與Python的對(duì)接。使用pyecharts可以生成獨(dú)立的網(wǎng)頁,也可以在flask,Django中集成使用[5]。
pyecharts包含的圖表:Bar 、Bar3D、Boxplot、EffectScatter 、Funnel、Gauge、Geo、Graph、HeatMap、Kline、Line、Line3D、Liquid、Map、Parallel、Pie、Polar、Radar、Sankey、Scatter、Scatter3D 、ThemeRiver、WordCloud。
pyecharts與matplotlib優(yōu)缺點(diǎn)對(duì)比如下:
(1)優(yōu)點(diǎn):matplotlib屬于靜態(tài)圖,沒有交互,pyecharts渲染效果更好;(2)缺點(diǎn):不穩(wěn)定,pyecharts分為v0.5.X和v1兩個(gè)大版本,v0.5.X和v1間不兼容,v1是一個(gè)全新的版本,支持Python3.6以上版本。
3.2.1 下載與安裝
(1)pip命令
$ pip(3) install pyecharts(shell中直接命令)
(2)源碼安裝
$ git clone https://github.com/pyecharts/pyecharts.git
$ cd pyecharts
$ pip install -r requirements.txt
$ python setup.py install
# 或者執(zhí)行 python install.py
3.2.2 pyecharts基本使用
pyecharts的詳細(xì)配置API可參考官方幫助文檔。本文簡單介紹幾款圖表的效果實(shí)例如圖1~4所示。
圖1 精美餅圖示例
圖3 十一飛機(jī)流動(dòng)圖
圖4 水果銷售熱力圖
通過對(duì)Python的數(shù)據(jù)可視化的簡要介紹和整理,包括可視化類型如何選擇,以及Python數(shù)據(jù)可視化的第三方庫的簡要介紹,并重點(diǎn)介紹了pyecharts庫,包括其下載與安裝,由于篇幅原因,只展示了利用pyecharts完成的四款常用圖形的實(shí)例。為學(xué)習(xí)數(shù)據(jù)可視的讀者提供參考。