1. 
          

          1. 新聞動(dòng)態(tài)

            功能強大、文檔健全的開(kāi)源 Python 繪圖庫 Plotly,手把手教你用!

            網(wǎng)站建設 發(fā)布者:cya 2020-01-08 08:58 訪(fǎng)問(wèn)量:545

            今天就帶你深入體驗易于使用、文檔健全、功能強大的開(kāi)源 Python 繪圖庫 Plotly,教你如何用超簡(jiǎn)單的(甚至只要一行!)代碼,繪制出更棒的圖表。


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


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


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


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


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

            (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)源的代碼庫,它基于 plot.js,而后者基于 d3.js。我們實(shí)際使用的則是一個(gè)對 plotly 進(jìn)行封裝的庫,名叫 cufflinks,它能讓你更方便地使用 plotly 和 Pandas 數據表協(xié)同工作。


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


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



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


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


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


            (代碼中的 df 是標準的 Pandas dataframe 對象)


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


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


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




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




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


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



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


            散點(diǎn)圖


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


            時(shí)間序列分析


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


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




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


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

            • 增加第二條 Y 軸,因為兩個(gè)變量的范圍并不一致

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


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



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


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




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



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


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


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


            高級繪圖功能


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


            散點(diǎn)圖矩陣


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


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


            關(guān)系熱圖


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

            自定義主題


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


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




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



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


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


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


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


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


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


            最后 ……


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


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

            • 快速探索數據所需的一行代碼圖表

            • 拆分/研究數據所需的交互式元素

            • 當需要時(shí)可以深入細節信息的選項

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

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


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

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



            關(guān)鍵字: 開(kāi)源 Python 繪圖庫 Plotly 開(kāi)封網(wǎng)站建設

            文章連接: http://www.gostscript.com/wzjss/670.html

            版權聲明:文章由 晨展科技 整理收集,來(lái)源于互聯(lián)網(wǎng)或者用戶(hù)投稿,如有侵權,請聯(lián)系我們,我們會(huì )立即刪除。如轉載請保留

            双腿国产亚洲精品无码不卡|国产91精品无码麻豆|97久久久久久久极品|无码人妻少妇久久中文字幕
                1.