<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3778字,需瀏覽 8分鐘

           ·

          2020-09-07 00:52

          來自公眾號:優(yōu)達學城Udacity

          作者:Will Koehrsen,譯者:歐剃,編輯:肉松

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

          今天就帶你深入體驗易于使用、文檔健全、功能強大的開源 Python 繪圖庫?Plotly,教你如何用超簡單的(甚至只要一行?。┐a,繪制出更棒的圖表。


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


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


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


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


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

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


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


          Plotly 概述


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


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


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


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


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


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


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


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


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


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




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




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


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



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


          散點圖


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


          時間序列分析


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


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




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


          • 自動生成美觀的時間序列 X 軸

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

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


          為了顯示更多數(shù)據(jù),我們可以方便地添加文本注釋:



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


          下面的代碼中,我們將一個雙變量散點圖按第三個分類變量進行著色:




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



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


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


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


          高級繪圖功能


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


          散點圖矩陣


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


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


          關(guān)系熱圖


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

          自定義主題


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


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




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



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


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


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


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


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


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


          最后?……


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


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

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

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

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

          • 最終展示前能輕易進行定制

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


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

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

          2020 年是時候升級你的 Python 繪圖庫了,讓自己在數(shù)據(jù)科學和可視化方面變得更快、更強、更美吧!

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码精品一区二区三区四区网站 | 亚洲国产欧美久久 | 成人中文娱乐 | aaa在线免费观看 | 影音先锋成人电影 |