首頁  >  文章  >  後端開發  >  功能強大的開源 Python 繪圖庫

功能強大的開源 Python 繪圖庫

王林
王林轉載
2023-05-11 12:07:051325瀏覽

功能强大的开源 Python 绘图库

我之前一直守著 matplotlib 用的原因,就是為了我學會它複雜的語法,已經「沉沒"在裡面的幾百個小時的時間成本。這也導致我花了不知多少個深夜,在 StackOverflow 上搜尋如何「格式化日期」或「增加第二個Y軸」。

但我們現在有一個更好的選擇了 —— 例如易於使用、文檔健全、功能強大的開源 Python 繪圖庫 Plotly。今天就帶你深入體驗下,了解它如何用超簡單的(甚至只要一行!)程式碼,繪製出更棒的圖表。

本文中所有程式碼都已經在 Github 上開源,所有的圖表都是可互動的,請使用Jupyter notebook檢視 。

(Github 原始碼位址:https://github.com/WillKoehrsen/Data-Analysis/blob/master/plotly/Plotly Whirlwind Introduction.ipynb)

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

###################################### ###(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」網站上發表的文章資料為例,讓我們以發佈時間為索引建立一個資料集,看看文章熱度的變化:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

在上圖中,我們用一行程式碼完成了幾件事:

  •  自動產生美觀的時間序列X 軸
  • 增加第二條Y 軸,因為兩個變數的範圍並不一致
  • 把文章標題放在滑鼠懸停時顯示的標籤中
##為了顯示更多數據,我們可以方便地添加文字註解:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

#(帶有文字註解的散佈圖)

在下面的程式碼中,我們將一個雙變數散佈圖按第三個分類變數進行著色:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

接下來我們要玩點複雜的:對數座標軸。我們透過指定plotly 的佈局(layout)參數來實現這一點(關於不同的佈局,請參考官方文件https://plot.ly/python/reference/ ),同時我們把點的尺寸(size參數)和一個數值變數read_ratio (閱讀比例)綁定,數字越大,泡泡的大小也越大。

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

如果想要更複雜一點(詳見Github 的原始碼),我們甚至可以在一張圖中塞進4個變數! (然而不推薦你們真的這麼搞)

功能强大的开源 Python 绘图库

和前面一樣,我們可以將pandas 和plotly cufflinks 結合起來,實現許多有用的圖表:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

建議你查看官方文檔,或原始碼,裡面有更多的範例和函數實例。只需要簡單的一兩行程式碼,就可以為你的圖表加上文字註釋,輔助線,最佳擬合線等有用的元素,並且保持原有的各種互動功能。

進階繪圖功能

接下來,我們要詳細介紹幾種特殊的圖表,平時你可能並不會很常用到它們,但我保證只要你用好了它們,一定能讓人刮目相看。我們要用 plotly 的 figure_factory 模組,只需要一行程式碼,就能產生超棒的圖表!

散佈圖矩陣

假如我們要探索許多不同變數之間的關係,散佈圖矩陣(也稱為SPLOM)就是個很棒的選擇:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

即使是這樣複雜的圖形,也是完全可互動的,讓我們能更詳盡地對資料進行探索。

關係熱圖

為了體現多個數值變數間的關係,我們可以計算它們的相關性,然後用標註熱度圖的形式進行視覺化:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

自訂主題

除了層出不窮的各種圖表外,Cufflinks 還提供了許多不同的著色主題,方便你輕鬆切換各種不同的圖表風格。下面兩張圖分別是「太空」主題和「ggplot」主題:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

#此外,還有3D 圖表(曲面和泡泡):

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

對有興趣研究的使用者來說,做張餅圖也不是什麼難事:

功能强大的开源 Python 绘图库

在Plotly 圖表工坊(Plotly Chart Studio)裡編輯

當你在Jupyter Notebook 裡產生了這些圖表之後,你將會發現圖表的右下角出現了一個小小的鏈接,寫著「Export to plot.ly(發佈到plot.ly)」。如果你點擊這個鏈接,你將會跳到一個「圖表工坊」(https://plot.ly/create/)。

在這裡,你可以在最終展示之前進一步修改和潤飾你的圖表。可以加上標註,選擇某些元素的顏色,把一切都整理清楚,產生一個超棒的圖表。之後,你也可以將它發佈到網路上,產生一個供其他人查閱的連結。

下面兩張圖是在圖表工坊裡製作的:

功能强大的开源 Python 绘图库

功能强大的开源 Python 绘图库

#講了這麼多,看都看累了吧?然而我們還沒有窮盡這個函式庫的所有功能。限於篇幅,有些更棒的圖表和範例,只好請大家訪問 plotly 和 cufflinks 的官方文件去一一查看咯。

功能强大的开源 Python 绘图库

(Plotly 互動式地圖,顯示了美國國內的風力發電場資料。來源:plot.ly)

最後…

關於沉沒成本謬誤,最糟糕的一點在於,人們往往只能在放棄先前的努力時,才能意識到自己浪費了多少時間。

在選擇一個繪圖庫的時候,你最需要的幾個功能有:

快速探索資料所需的一行程式碼圖表

  • 拆分/研究資料所需的互動元素
  • 當需要時可以深入細節資訊的選項
  • 最終展示前能輕易進行客製化
##從現在看來,要用Python 語言實現以上功能的最佳選擇非plotly 莫屬。它讓我們快速產生視覺化圖表,互動功能使我們更好地理解資訊。

我承認,繪圖絕對是資料科學工作中最讓人享受的部分,而 plotly 能讓你更愉悅地完成這些任務。

功能强大的开源 Python 绘图库

(用一張圖表顯示一下用Python 繪圖的愉悅程度隨著時間變化。來源towardsdatascience.com)

2022年是時候升級你的Python 繪圖庫了,讓自己在資料科學和視覺化方面變得更快、更強、更美吧!

以上是功能強大的開源 Python 繪圖庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除