提到數據可視化,大家可能腦海里就會出現里各種圖表、絢麗大屏、或者科幻電影里酷炫儀表。其實,日常生活里面,到處都有數據可視化的影子。
手表就是數據可視化的例子,最少只需要3個視覺元素(時針、分針和秒針),就可以表達43200個狀態。另外,水銀溫度計和地鐵線路圖,也是生活中數據可視化的運用!
視覺是人類獲取外界信息最高速,最主要也是最重要渠道。 超過50%的人腦功能用于視覺感知,而大腦接收到的信息 90% 來自視覺,人類利用視覺獲取和處理的信息量,遠遠超出其他途徑。
視覺的信息帶寬是最大的,其次是觸覺和聽覺。
人類大腦處理圖像的速度比文本快 6 萬倍。所謂的“可視化”,就是利用人類視覺化的思考能力,對數據進行可視表達以增強認知的技術。
說到python的常見應用,很多人會想到python的數據分析,作為數據分析中的表現層面,數據可視化都是其中必不可少的部分。但本文并非只推薦無任何數據分析需求僅需要做漂亮可視化圖表的人學習python數據可視化。本文介紹的只是一些常見的python第三方庫,畢竟作為一個工具來說,這些第三方庫使用起來并不是非常方便,也有一定的學習成本,普通的可視化推薦使用excel、wps,有條件的可以使用各種BI工具如:tableau,powerBI等。
那什么情況下需要用到python數據可視化庫呢?
如果是在某些特定場景中,需要用到python做數據分析,輸出各種圖表用于輔助分析或者數據報告展示,那這些庫則顯得必不可少,接下來將介紹一些如何學習的方法和第三方庫的介紹:
比如選擇一款合適的庫,先了解各種庫的特點,選擇合適的庫,然后學習繪圖原理,掌握的知識點
選擇官網是最省錢和系統的學習的最佳路徑,至于效率方面見仁見智。選擇書籍或視頻的方式也未嘗不可。
推薦學習使用的開發工具:JupyterNotebook。在數據分析和可視化的應用中,jupyter無疑是首選,相比其他如pycharm等工具,可以將每一步的可視化圖表輸出在同一頁面中,方便比較分析。
- 1 -
Matplotlib
官方文檔地址:
https://matplotlib.org/2.0.2/index.html
Gallery畫廊地址:
https://matplotlib.org/2.0.2/gallery.html
matplotlib是Python數據可視化庫的OG。盡管它已有十多年的歷史,但仍然是Python社區中使用最廣泛的繪圖庫。它的設計與MATLAB非常相似,MATLAB是20世紀80年代開發的專有編程語言。通常在python數據分析的教程中經常會包含該庫的學習。
基礎講解:使用matplotlib繪圖的原理,主要就是理解figure(畫布)、axes(坐標系)、axis(坐標軸)三者之間的關系。
步驟:創建figure圖形對象-> 獲取對應位置的axes坐標系對象->調用axes對象,進行對應位置的圖形繪制->顯示圖形。下圖是幫助我們理解figure和axes的關系。
- 2 -
Seaborn
官方文檔地址:
https://seaborn.pydata.org/tutorial.html
Gallery畫廊地址:
https://seaborn.pydata.org/examples/index.html
Seaborn利用matplotlib的強大功能,可以只用幾行代碼就創建漂亮的圖表。關鍵區別在于Seaborn的默認款式和調色板設計更加美觀和現代。由于Seaborn是在matplotlib之上構建的一個更高級的庫,因此還需要了解matplotlib以便調整Seaborn的默認值,所以在matplotlib上的調參也可以在Seaborn上面使用。Seaborn針對的點主要是數據挖掘和機器學習中的變量特征選取,seaborn可以用短小的代碼去繪制描述更多維度數據的可視化效果圖。
基礎講解:原理比較簡單,主要是通過sns對象調用各種類型表格的函數,這里舉一個例子:
import numpy as npimport seaborn as snsfrom scipy import stats, integrate%matplotlib inline #導入庫sns.set(color_codes=True)np.random.seed(sum(map(ord, 'distributions')))#構造數據,每次產生的隨機數相同x = np.random.gamma(6, size=200) #輸出圖像的主要函數,distplot是直方圖,根據需求選擇不同的圖表函數即可sns.distplot(x, kde=False, fit=stats.gamma)
- 3 -
Pyecharts
官方文檔地址:
https://pyecharts.org/
Gallery畫廊地址:
http://gallery.pyecharts.org/#/README
Echarts 是一個由百度開源的數據可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用于數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了。
這是國人開發的一個Echarts與Python結合的輪子,可以結合JavaScript等前端技術定制我們要的主題風格,功能非常強大,也是數據可視化非常常用的一個工具,也是比較推薦新手學習的。
基礎講解: 選擇圖表類型-> 聲明圖形類并添加數據,比如添加x軸和y軸的數據->選擇全局變量set_global_opts,設置參數->顯示及保存圖表;
from pyecharts.charts import Barfrom pyecharts import options as opts# V1 版本開始支持鏈式調用bar = ( Bar() .add_xaxis(['襯衫', '毛衣', '領帶', '褲子', '風衣', '高跟鞋', '襪子']) .add_yaxis('商家A', [114, 55, 27, 101, 125, 27, 105]) .add_yaxis('商家B', [57, 134, 137, 129, 145, 60, 49]) .set_global_opts(title_opts=opts.TitleOpts(title='某商場銷售情況')))bar.render()# 不習慣鏈式調用的開發者依舊可以單獨調用方法bar = Bar()bar.add_xaxis(['襯衫', '毛衣', '領帶', '褲子', '風衣', '高跟鞋', '襪子'])bar.add_yaxis('商家A', [114, 55, 27, 101, 125, 27, 105])bar.add_yaxis('商家B', [57, 134, 137, 129, 145, 60, 49])bar.set_global_opts(title_opts=opts.TitleOpts(title='某商場銷售情況'))bar.render()
注:各種不同的圖表輸入的數據格式會有所不同,導致部分復雜圖表的設置難度較大。
- 4 -
ggplot
官方文檔地址:
http://ggplot.yhathq.com/
ggplot基于ggplot2,一個 R 語言繪圖系統,以及The Grammar of Graphics的概念。ggplot的運行方式與matplotlib不同:它允許你對組件進行分層以創建完整的繪圖。例如,你可以從軸開始畫,然后添加點,然后是線、趨勢線等。雖然圖形語法被稱為繪圖的“直觀”方法,但經驗豐富的matplotlib用戶可能需要時間來適應這個新的方式。
- 5 -
Bokeh
官方文檔地址:
https://docs.bokeh.org/en/latest/
Gallery畫廊地址:
https://docs.bokeh.org/en/latest/docs/gallery.html
與ggplot一樣,Bokeh同樣基于The Grammar of Graphics,但與ggplot不同的是,它是原生Python的,而不是從R語言移植過來的。它的優勢在于能夠創建交互式的網站圖,它可以很容易地輸出為JSON對象、HTML或交互式Web應用程序。Bokeh還支持流媒體和實時數據。
- 6 -
Pygal
官方文檔地址:
http://www.pygal.org/en/stable/
與Bokeh和Plotly一樣,pygal提供可以嵌入Web瀏覽器的交互式圖。它的主要區別在于能夠將圖表輸出為SVG格式。如果你使用較小的數據集,SVG格式的圖像就可以了。但是如果制作的圖表包含數十萬個數據點,它們就會很難渲染并變得反應遲鈍。
- 7 -
Plotly
官方文檔地址:
https://plotly.com/
你可能知道Plotly是一個數據可視化的在線平臺,但你是否也知道可以從Python筆記本使用它的功能?與Bokeh一樣,Plotly的強項正在制作交互式圖,但它提供了一些在大多數庫中沒有的圖表,如等高線圖,樹狀圖和3D圖表。
- 8 -
Geoplotlib
Github地址:
https://github.com/andrea-cuttone/geoplotlib
geoplotlib是一個用于創建地圖和繪制地理數據的工具庫??梢允褂盟鼇韯摻ǜ鞣N地圖類型,例如等值線,熱圖和點密度貼圖。你必須安裝Pyglet(面向對象的編程接口)才能使用geoplotlib。盡管如此,由于大多數的Python數據可視化庫都沒有提供地圖類型,因此有一個專門的庫還是可以的。
參考文章:《數據可視化入門教程》https://www.yuque.com/mo-college/beginner-tutorial/uvaiu2
深度講解Python四大常用繪圖庫的“繪圖原理” https://my.oschina.net/u/4579597/blog/4444177