搜尋
首頁後端開發Python教學功能強大的開源 Python 繪圖庫

功能強大的開源 Python 繪圖庫

May 11, 2023 pm 12:07 PM
python繪圖庫

功能强大的开源 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刪除
Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用