最強(qiáng)最炫的Python數(shù)據(jù)可視化神器,沒(méi)有之一!

      網(wǎng)友投稿 1078 2025-04-01

      https://towardsdatascience.com/the-next-level-of-data-visualization-in-python-dd6e99039d5e


      今天給大家分享一篇可視化干貨,介紹的是功能強(qiáng)大的開(kāi)源?Python 繪圖庫(kù)?Plotly,教你如何用超簡(jiǎn)單的(甚至只要一行?。┐a,繪制出更棒的圖表。

      “沉沒(méi)成本謬誤”是人們常犯的幾種認(rèn)知偏差之一:由于在某件事上已經(jīng)投入了(“沉沒(méi)”)太多的成本,即使這件事已經(jīng)注定要失敗,人們傾向于繼續(xù)投入更多的時(shí)間和金錢(qián)。

      比如,在不好的職位上待了比正常更長(zhǎng)的時(shí)間,在一個(gè)明顯不可能的項(xiàng)目上埋頭苦干,以及(你猜的沒(méi)錯(cuò))繼續(xù)用一個(gè)陳舊、枯燥的繪圖庫(kù)——matplotlib——即使已經(jīng)有了更高效、更美觀、可互動(dòng)性更好的替代品了。

      我之前一直守著 matplotlib 用的原因,就是為了我學(xué)會(huì)它復(fù)雜的語(yǔ)法,已經(jīng)“沉沒(méi)"在里面的幾百個(gè)小時(shí)的時(shí)間成本。這也導(dǎo)致我花費(fèi)了不知多少個(gè)深夜,在 StackOverflow 上搜索如何“格式化日期”或“增加第二個(gè)Y軸”。

      但我們現(xiàn)在有一個(gè)更好的選擇了 —— 比如易于使用、文檔健全、功能強(qiáng)大的開(kāi)源 Python 繪圖庫(kù)?Plotly。今天就帶你深入體驗(yàn)下,了解它如何用超簡(jiǎn)單的(甚至只要一行?。┐a,繪制出更棒的圖表。

      * 本文中所有代碼都已經(jīng)在 Github 上開(kāi)源,所有的圖表都是可交互的,請(qǐng)使用Jupyter notebook查看 。

      (Github 源代碼地址:https://github.com/WillKoehrsen/Data-Analysis/blob/master/plotly/Plotly%20Whirlwind%20Introduction.ipynb)

      (plotly 繪制的范例圖表。圖片來(lái)源:plot.ly)

      Plotly 概述

      plotly 的 Python 軟件包是一個(gè)開(kāi)源的代碼庫(kù),它基于 plot.js,而后者基于 d3.js。我們實(shí)際使用的則是一個(gè)對(duì) plotly 進(jìn)行封裝的庫(kù),名叫 cufflinks,它能讓你更方便地使用 plotly 和 Pandas 數(shù)據(jù)表協(xié)同工作。

      *注:Plotly 本身是一個(gè)擁有多個(gè)不同產(chǎn)品和開(kāi)源工具集的可視化技術(shù)公司。Plotly 的 Python 庫(kù)是可以免費(fèi)使用的,在離線模式可以創(chuàng)建數(shù)量不限的圖表,在線模式因?yàn)橛玫搅?Plotly 的共享服務(wù),只能生成并分享 25 張圖表。

      本文中的所有可視化圖表都是在 Jupyter Notebook 中使用離線模式的 plotly + cufflinks 庫(kù)完成的。在使用?pip install cufflinks plotly?完成安裝后,你可以用下面這樣的代碼在 Jupyter 里完成導(dǎo)入:

      單變量分布:柱狀圖和箱形圖

      單變量分析圖往往是開(kāi)始數(shù)據(jù)分析時(shí)的標(biāo)準(zhǔn)做法,而柱狀圖基本上算是單變量分布分析時(shí)必備的圖表之一(雖然它還有一些不足)。

      就拿博客文章總數(shù)為例(原始數(shù)據(jù)見(jiàn) Github:https://github.com/WillKoehrsen/Data-Analysis/tree/master/medium ),做一個(gè)簡(jiǎn)單的交互式柱狀圖:

      (代碼中的?df?是標(biāo)準(zhǔn)的 Pandas dataframe 對(duì)象)

      (使用 plotly+cufflinks 創(chuàng)建的交互式柱狀圖)

      對(duì)于已經(jīng)習(xí)慣?matplotlib?的同學(xué),你們只需要多打一個(gè)字母(把?.plot?改成?.iplot?),就能獲得看起來(lái)更加美觀的交互式圖表!點(diǎn)擊圖片上的元素就能顯示出詳細(xì)信息、隨意縮放,還帶有(我們接下來(lái)會(huì)提到的)高亮篩選某些部分等超棒功能。

      如果你想繪制堆疊柱狀圖,也只需要這樣:

      對(duì)?pandas?數(shù)據(jù)表進(jìn)行簡(jiǎn)單的處理,并生成條形圖:

      就像上面展示的那樣,我們可以將 plotly + cufflinks 和 pandas 的能力整合在一起。比如,我們可以先用?.pivot()?進(jìn)行數(shù)據(jù)透視表分析,然后再生成條形圖。

      比如統(tǒng)計(jì)不同發(fā)表渠道中,每篇文章帶來(lái)的新增粉絲數(shù):

      交互式圖表帶來(lái)的好處是,我們可以隨意探索數(shù)據(jù)、拆分子項(xiàng)進(jìn)行分析。箱型圖能提供大量的信息,但如果你看不到具體數(shù)值,你很可能會(huì)錯(cuò)過(guò)其中的一大部分!

      散點(diǎn)圖

      散點(diǎn)圖是大多數(shù)分析的核心內(nèi)容,它能讓我們看出一個(gè)變量隨著時(shí)間推移的變化情況,或是兩個(gè)(或多個(gè))變量之間的關(guān)系變化情況。

      時(shí)間序列分析

      在現(xiàn)實(shí)世界中,相當(dāng)部分的數(shù)據(jù)都帶有時(shí)間元素。幸運(yùn)的是,plotly + cufflinks 天生就帶有支持時(shí)間序列可視化分析的功能。

      以我在“Towards Data Science”網(wǎng)站上發(fā)表的文章數(shù)據(jù)為例,讓我們以發(fā)布時(shí)間為索引構(gòu)建一個(gè)數(shù)據(jù)集,看看文章熱度的變化情況:

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

      自動(dòng)生成美觀的時(shí)間序列 X 軸

      增加第二條 Y 軸,因?yàn)閮蓚€(gè)變量的范圍并不一致

      把文章標(biāo)題放在鼠標(biāo)懸停時(shí)顯示的標(biāo)簽中

      為了顯示更多數(shù)據(jù),我們可以方便地添加文本注釋?zhuān)?/p>

      (帶有文本注釋的散點(diǎn)圖)

      下面的代碼中,我們將一個(gè)雙變量散點(diǎn)圖按第三個(gè)分類(lèi)變量進(jìn)行著色:

      接下來(lái)我們要玩點(diǎn)復(fù)雜的:對(duì)數(shù)坐標(biāo)軸。我們通過(guò)指定 plotly 的布局(layout)參數(shù)來(lái)實(shí)現(xiàn)這一點(diǎn)(關(guān)于不同的布局,請(qǐng)參考官方文檔 https://plot.ly/python/reference/?),同時(shí)我們把點(diǎn)的尺寸(size參數(shù))和一個(gè)數(shù)值變量?read_ratio?(閱讀比例)綁定,數(shù)字越大,泡泡的尺寸也越大。

      如果想要更復(fù)雜一些(詳見(jiàn) Github 的源代碼),我們甚至可以在一張圖里塞進(jìn) 4 個(gè)變量?。ㄈ欢⒉煌扑]你們真的這么搞)

      和前面一樣,我們可以將 pandas 和 plotly+cufflinks 結(jié)合起來(lái),實(shí)現(xiàn)許多有用的圖表:

      建議你查看官方文檔,或者源代碼,里面有更多的范例和函數(shù)實(shí)例。只需要簡(jiǎn)單的一兩行代碼,就可以為你的圖表加上文字注釋?zhuān)o助線,最佳擬合線等有用的元素,并且保持原有的各種交互式功能。

      高級(jí)繪圖功能

      接下來(lái),我們要詳細(xì)介紹幾種特殊的圖表,平時(shí)你可能并不會(huì)很經(jīng)常用到它們,但我保證只要你用好了它們,一定能讓人刮目相看。我們要用到 plotly 的?figure_factory?模塊,只需要一行代碼,就能生成超棒的圖表!

      散點(diǎn)圖矩陣

      假如我們要探索許多不同變量之間的關(guān)系,散點(diǎn)圖矩陣(也被稱(chēng)為SPLOM)就是個(gè)很棒的選擇:

      即使是這樣復(fù)雜的圖形,也是完全可交互的,讓我們能更詳盡地對(duì)數(shù)據(jù)進(jìn)行探索。

      關(guān)系熱圖

      為了體現(xiàn)多個(gè)數(shù)值變量間的關(guān)系,我們可以計(jì)算它們的相關(guān)性,然后用帶標(biāo)注熱度圖的形式進(jìn)行可視化:

      自定義主題

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

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

      對(duì)有興趣研究的用戶(hù)來(lái)說(shuō),做張餅圖也不是什么難事:

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

      當(dāng)你在 Jupyter Notebook 里生成了這些圖表之后,你將會(huì)發(fā)現(xiàn)圖表的右下角出現(xiàn)了一個(gè)小小的鏈接,寫(xiě)著“Export to plot.ly(發(fā)布到 plot.ly)”。如果你點(diǎn)擊這個(gè)鏈接,你將會(huì)跳轉(zhuǎn)到一個(gè)“圖表工坊”(https://plot.ly/create/)。

      在這里,你可以在最終展示之前進(jìn)一步修改和潤(rùn)色你的圖表。可以添加標(biāo)注,選擇某些元素的顏色,把一切都整理清楚,生成一個(gè)超棒的圖表。之后,你還可以將它發(fā)布到網(wǎng)絡(luò)上,生成一個(gè)供其他人查閱的鏈接。

      下面兩張圖是在圖表工坊里制作的:

      講了這么多,看都看累了吧?然而我們還并沒(méi)有窮盡這個(gè)庫(kù)的所有功能。限于篇幅,有些更棒的圖表和范例,只好請(qǐng)大家訪問(wèn) plotly 和 cufflinks 的官方文檔去一一查看咯。

      (Plotly 交互式地圖,顯示了美國(guó)國(guó)內(nèi)的風(fēng)力發(fā)電場(chǎng)數(shù)據(jù)。來(lái)源:plot.ly)

      最后

      關(guān)于沉沒(méi)成本謬誤,最糟糕的一點(diǎn)在于,人們往往只能在放棄之前的努力時(shí),才能意識(shí)到自己浪費(fèi)了多少時(shí)間。

      在選擇一款繪圖庫(kù)的時(shí)候,你最需要的幾個(gè)功能有:

      快速探索數(shù)據(jù)所需的一行代碼圖表

      拆分/研究數(shù)據(jù)所需的交互式元素

      當(dāng)需要時(shí)可以深入細(xì)節(jié)信息的選項(xiàng)

      最終展示前能輕易進(jìn)行定制

      從現(xiàn)在看來(lái),要用 Python 語(yǔ)言實(shí)現(xiàn)以上功能的最佳選擇非 plotly 莫屬。它讓我們快速生成可視化圖表,交互功能使我們更好地理解信息。

      我承認(rèn),繪圖絕對(duì)是數(shù)據(jù)科學(xué)工作中最讓人享受的部分,而 plotly 能讓你更加愉悅地完成這些任務(wù)。

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

      往期回顧:

      Python 學(xué)習(xí)手冊(cè)

      Pandas 學(xué)習(xí)大禮包

      100+ Python 爬蟲(chóng)項(xiàng)目

      Python 數(shù)據(jù)分析入門(mén)手冊(cè)

      100?道?Python?經(jīng)典練習(xí)題

      70 個(gè) Python 經(jīng)典實(shí)用練手項(xiàng)目

      最強(qiáng)最炫的Python數(shù)據(jù)可視化神器,沒(méi)有之一!

      20張高清數(shù)據(jù)分析(Python)全知識(shí)地圖

      14 張 Python 速查表玩轉(zhuǎn)數(shù)據(jù)分析&可視化&機(jī)器學(xué)習(xí)

      Python 數(shù)據(jù)可視化

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:GaussDB(DWS)對(duì)象依賴(lài)案例集錦
      下一篇:制造中心生產(chǎn)流程管理(工廠生產(chǎn)流程管理)
      相關(guān)文章
      亚洲AV人人澡人人爽人人夜夜| 亚洲人成网站999久久久综合| 亚洲a级成人片在线观看| 国产亚洲色婷婷久久99精品| 亚洲Av永久无码精品一区二区| 亚洲第一成人在线| 亚洲一区二区三区无码国产| 亚洲一区二区三区自拍公司| 日韩一卡2卡3卡4卡新区亚洲| 亚洲性久久久影院| 相泽亚洲一区中文字幕| 相泽亚洲一区中文字幕| 在线亚洲97se亚洲综合在线| 久久亚洲av无码精品浪潮| 亚洲人成影院在线无码观看| 国产精品亚洲视频| 亚洲一区二区三区无码中文字幕| 亚洲午夜久久久久久久久久 | 亚洲伊人久久大香线蕉综合图片| 337p日本欧洲亚洲大胆裸体艺术| 久久国产成人精品国产成人亚洲 | 91情国产l精品国产亚洲区| 亚洲视频国产视频| 亚洲av无码电影网| 77777亚洲午夜久久多喷| 亚洲欧美日韩国产成人| 亚洲国产成人AV网站| 亚洲精品美女久久久久99小说| 亚洲伊人久久综合中文成人网| 亚洲一区二区三区无码中文字幕| 亚洲国产精品成人久久| 久久亚洲AV成人无码| 亚洲偷偷自拍高清| 色偷偷尼玛图亚洲综合| 精品国产亚洲一区二区三区在线观看| 亚洲A丁香五香天堂网| 国产亚洲人成A在线V网站| 国产亚洲精品观看91在线| 久久精品亚洲中文字幕无码麻豆 | 国产亚洲男人的天堂在线观看| 亚洲人成网站在线观看青青|