我之前一直守著 matplotlib 用的原因,就是為了我學會它複雜的語法,已經「沉沒"在裡面的幾百個小時的時間成本。這也導致我花了不知多少個深夜,在 StackOverflow 上搜尋如何「格式化日期」或「增加第二個Y軸」。
但我們現在有一個更好的選擇了 —— 例如易於使用、文檔健全、功能強大的開源 Python 繪圖庫 Plotly。今天就帶你深入體驗下,了解它如何用超簡單的(甚至只要一行!)程式碼,繪製出更棒的圖表。
本文中所有程式碼都已經在 Github 上開源,所有的圖表都是可互動的,請使用Jupyter notebook檢視 。
(Github 原始碼位址:https://github.com/WillKoehrsen/Data-Analysis/blob/master/plotly/Plotly Whirlwind Introduction.ipynb)
###################################### ###(plotly 繪製的範例圖表。圖片來源:plot.ly)######Plotly 概述######plotly 的Python 軟體包是一個開源的程式碼庫,它基於plot.js,而後者基於d3.js。我們實際使用的則是一個對 plotly 進行封裝的函式庫,名叫 cufflinks,它能讓你更方便地使用 plotly 和 Pandas 資料表協同工作。 ######*註:Plotly 本身就是一個擁有多個不同產品和開源工具集的視覺化技術公司。 Plotly 的 Python 函式庫是可以免費使用的,在離線模式可以建立數量不限的圖表,線上模式因為用到了 Plotly 的共享服務,只能產生並分享 25 張圖表。 ######本文中的所有視覺化圖表都是在 Jupyter Notebook 中使用離線模式的 plotly cufflinks 函式庫完成的。在使用pip install cufflinks plotly 完成安裝後,你可以用下面這樣的程式碼在Jupyter 裡完成導入:##################單變量分佈:柱狀圖和箱形圖#########單變量分析圖往往是開始資料分析時的標準做法,而長條圖基本上算是單變量分佈分析時必備的圖表之一(雖然它還有一些不足)。 ######就拿部落格文章按讚總數為例(原始資料見Github:https://github.com/WillKoehrsen/Data-Analysis/tree/master/medium ),做一個簡單的互動式長條圖:###############(程式碼中的df 是標準的Pandas dataframe 物件)###############(使用plotly cufflinks 建立的交互式長條圖)######對於已經習慣matplotlib 的同學,你們只需要多打一個字母(把.plot 改成.iplot ),就能獲得看起來更加美觀的交互式圖表!點擊圖片上的元素就能顯示出詳細資訊、隨意縮放,還附帶(我們接下來會提到的)高亮篩選某些部分等超棒功能。 ######如果你想繪製堆疊柱狀圖,也只需要這樣:#########################對pandas 資料表進行簡單的處理,並產生條形圖:########################就像上面展示的那樣,我們可以將plotly cufflinks 和pandas 的能力整合在一起。例如,我們可以先用 .pivot() 進行資料透視表分析,然後再產生長條圖。 ######例如統計不同發表管道中,每篇文章帶來的新增粉絲數:#####################
互動式圖表帶來的好處是,我們可以隨意探索資料、分割子項目進行分析。箱型圖能提供大量的信息,但如果你看不到具體數值,你很可能會錯過其中的一大部分!
散佈圖是大多數分析的核心內容,它能讓我們看出一個變數隨著時間推移的變化情況,或是兩個(或多個)變數之間的關係變化情況。
時間序列分析
在現實世界中,相當部分的資料都帶有時間元素。幸運的是,plotly cufflinks 天生就帶有支援時間序列視覺化分析的功能。
以我在「Towards Data Science」網站上發表的文章資料為例,讓我們以發佈時間為索引建立一個資料集,看看文章熱度的變化:
在上圖中,我們用一行程式碼完成了幾件事:
為了體現多個數值變數間的關係,我們可以計算它們的相關性,然後用標註熱度圖的形式進行視覺化:
除了層出不窮的各種圖表外,Cufflinks 還提供了許多不同的著色主題,方便你輕鬆切換各種不同的圖表風格。下面兩張圖分別是「太空」主題和「ggplot」主題:
#此外,還有3D 圖表(曲面和泡泡):
對有興趣研究的使用者來說,做張餅圖也不是什麼難事:
當你在Jupyter Notebook 裡產生了這些圖表之後,你將會發現圖表的右下角出現了一個小小的鏈接,寫著「Export to plot.ly(發佈到plot.ly)」。如果你點擊這個鏈接,你將會跳到一個「圖表工坊」(https://plot.ly/create/)。
在這裡,你可以在最終展示之前進一步修改和潤飾你的圖表。可以加上標註,選擇某些元素的顏色,把一切都整理清楚,產生一個超棒的圖表。之後,你也可以將它發佈到網路上,產生一個供其他人查閱的連結。
下面兩張圖是在圖表工坊裡製作的:
#講了這麼多,看都看累了吧?然而我們還沒有窮盡這個函式庫的所有功能。限於篇幅,有些更棒的圖表和範例,只好請大家訪問 plotly 和 cufflinks 的官方文件去一一查看咯。
(Plotly 互動式地圖,顯示了美國國內的風力發電場資料。來源:plot.ly)
關於沉沒成本謬誤,最糟糕的一點在於,人們往往只能在放棄先前的努力時,才能意識到自己浪費了多少時間。
在選擇一個繪圖庫的時候,你最需要的幾個功能有:
快速探索資料所需的一行程式碼圖表
以上是功能強大的開源 Python 繪圖庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!