<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 可視化神器

          共 6024字,需瀏覽 13分鐘

           ·

          2021-08-06 08:45


          Plotly Express 入門(mén)之路

          Plotly Express 是一個(gè)新的高級(jí) Python 可視化庫(kù):它是 Plotly.py 的高級(jí)封裝,它為復(fù)雜的圖表提供了一個(gè)簡(jiǎn)單的語(yǔ)法。 

          受 Seaborn 和 ggplot2 的啟發(fā),它專(zhuān)門(mén)設(shè)計(jì)為具有簡(jiǎn)潔,一致且易于學(xué)習(xí)的 API :只需一次導(dǎo)入,您就可以在一個(gè)函數(shù)調(diào)用中創(chuàng)建豐富的交互式繪圖,包括分面繪圖(faceting)、地圖、動(dòng)畫(huà)和趨勢(shì)線。它帶有數(shù)據(jù)集、顏色面板和主題,就像 Plotly.py 一樣。

          Plotly Express 完全免費(fèi):憑借其寬松的開(kāi)源 MIT 許可證,您可以隨意使用它(是的,甚至在商業(yè)產(chǎn)品中!)。 

          最重要的是,Plotly Express 與 Plotly 生態(tài)系統(tǒng)的其他部分完全兼容:在您的 Dash 應(yīng)用程序中使用它,使用 Orca 將您的數(shù)據(jù)導(dǎo)出為幾乎任何文件格式,或使用JupyterLab 圖表編輯器在 GUI 中編輯它們!

          用 pip install plotly_express 命令可以安裝 Plotly Express。

          使用 Plotly Express 輕松地進(jìn)行數(shù)據(jù)可視化

          一旦導(dǎo)入Plotly Express(通常是 px ),大多數(shù)繪圖只需要一個(gè)函數(shù)調(diào)用,接受一個(gè)整潔的Pandas dataframe,并簡(jiǎn)單描述你想要制作的圖。如果你想要一個(gè)基本的散點(diǎn)圖,它只是 px.scatterdata=“column_name”,=“column_name”)

          以下是 內(nèi)置的 Gapminder 數(shù)據(jù)集 的示例,顯示2007年按國(guó)家/地區(qū)的人均預(yù)期壽命和人均GDP 之間的趨勢(shì):

          1. import plotly_express as px


          2. gapminder = px.data.gapminder()

          3. gapminder2007 = gapminder.query('year == 2007')

          4. px.scatter(gapminder2007, x='gdpPercap', y='lifeExp')

          如果你想通過(guò)大陸區(qū)分它們,你可以使用 color 參數(shù)為你的點(diǎn)著色,由 px 負(fù)責(zé)設(shè)置默認(rèn)顏色,設(shè)置圖例等:

          這里的每一點(diǎn)都是一個(gè)國(guó)家,所以也許我們想要按國(guó)家人口來(lái)衡量這些點(diǎn)...... 沒(méi)問(wèn)題:這里也有一個(gè)參數(shù)來(lái)設(shè)置,它被稱(chēng)為 size

          如果你好奇哪個(gè)國(guó)家對(duì)應(yīng)哪個(gè)點(diǎn)?可以添加一個(gè) hover_name ,您可以輕松識(shí)別任何一點(diǎn):只需將鼠標(biāo)放在您感興趣的點(diǎn)上即可!事實(shí)上,即使沒(méi)有 hover_name ,整個(gè)圖表也是互動(dòng)的:

          也可以通過(guò) facet_col =”continent 來(lái)輕松劃分各大洲,就像著色點(diǎn)一樣容易,并且讓我們使用 x軸 對(duì)數(shù)(log_x)以便在我們?cè)趫D表中看的更清晰:

          也許你不僅僅對(duì) 2007年 感興趣,而且你想看看這張圖表是如何隨著時(shí)間的推移而演變的??梢酝ㄟ^(guò)設(shè)置 animation_frame=“year (以及 animation_group =“country 來(lái)標(biāo)識(shí)哪些圓與控制條中的年份匹配)來(lái)設(shè)置動(dòng)畫(huà)。 

          在這個(gè)最終版本中,讓我們?cè)谶@里調(diào)整一些顯示,因?yàn)橄瘛癵dpPercap” 這樣的文本有點(diǎn)難看,即使它是我們的數(shù)據(jù)框列的名稱(chēng)。我們可以提供更漂亮的“標(biāo)簽” (labels),可以在整個(gè)圖表、圖例、標(biāo)題軸和懸停(hovers)中應(yīng)用。我們還可以手動(dòng)設(shè)置邊界,以便動(dòng)畫(huà)在整個(gè)過(guò)程中看起來(lái)更棒:

          因?yàn)檫@是地理數(shù)據(jù),我們也可以將其表示為動(dòng)畫(huà)地圖,因此這清楚地表明 Plotly Express 不僅僅可以繪制散點(diǎn)圖(不過(guò)這個(gè)數(shù)據(jù)集缺少前蘇聯(lián)的數(shù)據(jù))。

          事實(shí)上,Plotly Express 支持三維散點(diǎn)圖、三維線形圖、極坐標(biāo)和地圖上三元坐標(biāo)以及二維坐標(biāo)。條形圖(Bar)有二維笛卡爾和極坐標(biāo)風(fēng)格。

          進(jìn)行可視化時(shí),您可以使用單變量設(shè)置中的直方圖(histograms)和箱形圖(box)或小提琴圖(violin plots),或雙變量分布的密度等高線圖(density contours)。大多數(shù)二維笛卡爾圖接受連續(xù)或分類(lèi)數(shù)據(jù),并自動(dòng)處理日期/時(shí)間數(shù)據(jù)??梢圆榭次覀兊膱D庫(kù) (ref-3) 來(lái)了解每個(gè)圖表的例子。


          可視化分布

          數(shù)據(jù)探索的主要部分是理解數(shù)據(jù)集中值的分布,以及這些分布如何相互關(guān)聯(lián)。Plotly Express 有許多功能來(lái)處理這些任務(wù)。

          使用直方圖(histograms),箱形圖(box)或小提琴圖(violin plots)可視化單變量分布:

          直方圖:

          箱形圖:

          小提琴圖: 

          還可以創(chuàng)建聯(lián)合分布圖(marginal rugs),使用直方圖,箱形圖(box)或小提琴來(lái)顯示雙變量分布,也可以添加趨勢(shì)線。Plotly Express 甚至可以幫助你在懸停框中添加線條公式和R2值!它使用 statsmodels 進(jìn)行普通最小二乘(OLS)回歸或局部加權(quán)散點(diǎn)圖平滑(LOWESS)。

          顏色面板和序列

          在上面的一些圖中你會(huì)注意到一些不錯(cuò)的色標(biāo)。在 Plotly Express 中, px.colors 模塊包含許多有用的色標(biāo)和序列:定性的、序列型的、離散的、循環(huán)的以及所有您喜歡的開(kāi)源包:ColorBrewer、cmocean 和 Carto 。我們還提供了一些功能來(lái)制作可瀏覽的樣本供您欣賞(ref-3):

          定性的顏色序列:

          眾多內(nèi)置順序色標(biāo)中的一部分:

          用一行 Python 代碼進(jìn)行交互式多維可視化

          我們特別為我們的交互式多維圖表感到自豪,例如散點(diǎn)圖矩陣(SPLOMS)、平行坐標(biāo)和我們稱(chēng)之為并行類(lèi)別的并行集。通過(guò)這些,您可以在單個(gè)圖中可視化整個(gè)數(shù)據(jù)集以進(jìn)行數(shù)據(jù)探索。在你的Jupyter 筆記本中查看這些單行及其啟用的交互:

          散點(diǎn)圖矩陣(SPLOM)允許您可視化多個(gè)鏈接的散點(diǎn)圖:數(shù)據(jù)集中的每個(gè)變量與其他變量的關(guān)系。數(shù)據(jù)集中的每一行都顯示為每個(gè)圖中的一個(gè)點(diǎn)。你可以進(jìn)行縮放、平移或選擇操作,你會(huì)發(fā)現(xiàn)所有圖都鏈接在一起!

          平行坐標(biāo)允許您同時(shí)顯示3個(gè)以上的連續(xù)變量。dataframe 中的每一行都是一行。您可以拖動(dòng)尺寸以重新排序它們并選擇值范圍之間的交叉點(diǎn)。


          并行類(lèi)別是并行坐標(biāo)的分類(lèi)模擬:使用它們可視化數(shù)據(jù)集中多組類(lèi)別之間的關(guān)系。

          Plotly 生態(tài)系統(tǒng)的一部分

          Plotly Express 之于 Plotly.py 類(lèi)似 Seaborn 之于 matplotlib:Plotly Express 是一個(gè)高級(jí)封裝庫(kù),允許您快速創(chuàng)建圖表,然后使用底層 API 和生態(tài)系統(tǒng)的強(qiáng)大功能進(jìn)行修改。對(duì)于Plotly 生態(tài)系統(tǒng),這意味著一旦您使用 Plotly Express 創(chuàng)建了一個(gè)圖形,您就可以使用Themes,使用 FigureWidgets 進(jìn)行命令性編輯,使用 Orca 將其導(dǎo)出為幾乎任何文件格式,或者在我們的 GUI JupyterLab 圖表編輯器中編輯它 。

          主題(Themes)允許您控制圖形范圍的設(shè)置,如邊距、字體、背景顏色、刻度定位等。您可以使用模板參數(shù)應(yīng)用任何命名的主題或主題對(duì)象:

          有三個(gè)內(nèi)置的 Plotly 主題可以使用, 分別是 plotly, plotlywhite 和 plotlydark

          px 輸出繼承自 Plotly.py 的 Figure 類(lèi) ExpressFigure 的對(duì)象,這意味著你可以使用任何 Figure 的訪問(wèn)器和方法來(lái)改變 px生成的繪圖。例如,您可以將 .update() 調(diào)用鏈接到 px 調(diào)用以更改圖例設(shè)置并添加注釋。 .update() 現(xiàn)在返回修改后的數(shù)字,所以你仍然可以在一個(gè)很長(zhǎng)的 Python 語(yǔ)句中執(zhí)行此操作:

          在這里,在使用 Plotly Express 生成原始圖形之后,我們使用 Plotly.py 的 API 來(lái)更改一些圖例設(shè)置并添加注釋。

          能夠與 Dash 完美匹配

          Dash 是 Plotly 的開(kāi)源框架,用于構(gòu)建具有 Plotly.py 圖表的分析應(yīng)用程序和儀表板。Plotly Express 產(chǎn)生的對(duì)象與 Dash 100%兼容,只需將它們直接傳遞到 dash_core_components.Graph,如下所示: dcc.Graphfigure = px.scatter(...))。這是一個(gè)非常簡(jiǎn)單的 50行 Dash 應(yīng)用程序的示例,它使用 px 生成其中的圖表:

          這個(gè) 50 行的 Dash 應(yīng)用程序使用 Plotly Express 生成用于瀏覽數(shù)據(jù)集的 UI 。

          設(shè)計(jì)理念:為什么我們創(chuàng)建 Plotly Express ?

          可視化數(shù)據(jù)有很多原因:有時(shí)您想要提供一些想法或結(jié)果,并且您希望對(duì)圖表的每個(gè)方面施加很多控制,有時(shí)您希望快速查看兩個(gè)變量之間的關(guān)系。這是交互與探索的范疇。

          Plotly.py 已經(jīng)發(fā)展成為一個(gè)非常強(qiáng)大的可視化交互工具:它可以讓你控制圖形的幾乎每個(gè)方面,從圖例的位置到刻度的長(zhǎng)度。不幸的是,這種控制的代價(jià)是冗長(zhǎng)的:有時(shí)可能需要多行 Python 代碼才能用 Plotly.py 生成圖表。

          我們使用 Plotly Express 的主要目標(biāo)是使 Plotly.py 更容易用于探索和快速迭代。

          我們想要構(gòu)建一個(gè)庫(kù),它做出了不同的權(quán)衡:在可視化過(guò)程的早期犧牲一些控制措施來(lái)?yè)Q取一個(gè)不那么詳細(xì)的 API,允許你在一行 Python 代碼中制作各種各樣的圖表。然而,正如我們上面所示,該控件并沒(méi)有消失:你仍然可以使用底層的 Plotly.py 的 API 來(lái)調(diào)整和優(yōu)化用 Plotly Express 制作的圖表。

          支持這種簡(jiǎn)潔 API 的主要設(shè)計(jì)決策之一是所有 Plotly Express 的函數(shù)都接受“整潔”的 dataframe 作為輸入。每個(gè) Plotly Express 函數(shù)都體現(xiàn)了dataframe 中行與單個(gè)或分組標(biāo)記的清晰映射,并具有圖形啟發(fā)的語(yǔ)法簽名,可讓您直接映射這些標(biāo)記的變量,如 x 或 y 位置、顏色、大小、 facet-column 甚至是 動(dòng)畫(huà)幀到數(shù)據(jù)框(dataframe)中的列。當(dāng)您鍵入 px.scatterdata,='col1',y='col2' 時(shí),Plotly Express 會(huì)為數(shù)據(jù)框中的每一行創(chuàng)建一個(gè)小符號(hào)標(biāo)記 - 這就是 px.scatter 的作用 - 并將 “col1” 映射到 x 位置(類(lèi)似于 y 位置)。這種方法的強(qiáng)大之處在于它以相同的方式處理所有可視化變量:您可以將數(shù)據(jù)框列映射到顏色,然后通過(guò)更改參數(shù)來(lái)改變您的想法并將其映射到大小或進(jìn)行行分面(facet-row)。

          接受整個(gè)整潔的 dataframe 的列名作為輸入(而不是原始的 numpy 向量)也允許 px 為你節(jié)省大量的時(shí)間,因?yàn)樗懒械拿Q(chēng),它可以生成所有的 Plotly.py 配置用于標(biāo)記圖例、軸、懸???、構(gòu)面甚至動(dòng)畫(huà)幀。但是,如上所述,如果你的 dataframe 的列被笨拙地命名,你可以告訴 px 用每個(gè)函數(shù)的 labels 參數(shù)替換更好的。

          僅接受整潔輸入所帶來(lái)的最終優(yōu)勢(shì)是它更直接地支持快速迭代:您整理一次數(shù)據(jù)集,從那里可以使用 px 創(chuàng)建數(shù)十種不同類(lèi)型的圖表,包括在 SPLOM 中可視化多個(gè)維度 、使用平行坐標(biāo)、在地圖上繪制,在二維、三維極坐標(biāo)或三維坐標(biāo)中使用等,所有這些都不需要重塑您的數(shù)據(jù)!

          我們沒(méi)有以權(quán)宜之計(jì)的名義犧牲控制的所有方面,我們只關(guān)注您想要在數(shù)據(jù)可視化過(guò)程的探索階段發(fā)揮的控制類(lèi)型。您可以對(duì)大多數(shù)函數(shù)使用 category_orders 參數(shù)來(lái)告訴 px 您的分類(lèi)數(shù)據(jù)“好”、“更好”、“最佳” 等具有重要的非字母順序,并且它將用于分類(lèi)軸、分面繪制 和圖例的排序。您可以使用 color_discrete_map (以及其他 * _map 參數(shù))將特定顏色固定到特定數(shù)據(jù)值(如果這對(duì)您的示例有意義)。當(dāng)然,你可以在任何地方重構(gòu) color_discrete_sequence 或 color_continuous_scale (和其他 *_sequence 參數(shù))。

          在 API 級(jí)別,我們?cè)?nbsp;px 中投入了大量的工作,以確保所有參數(shù)都被命名,以便在鍵入時(shí)最大限度地發(fā)現(xiàn):所有 scatter -類(lèi)似的函數(shù)都以 scatter 開(kāi)頭(例如 scatter_polar, scatter_ternary)所以你可以通過(guò)自動(dòng)補(bǔ)全來(lái)發(fā)現(xiàn)它們。我們選擇拆分這些不同的散點(diǎn)圖函數(shù),因此每個(gè)散點(diǎn)圖函數(shù)都會(huì)接受一組定制的關(guān)鍵字參數(shù),特別是它們的坐標(biāo)系。也就是說(shuō),共享坐標(biāo)系的函數(shù)集(例如 scatter, line & bar,或 scatter_polar, line_polar 和 bar_polar )也有相同的參數(shù),以最大限度地方便學(xué)習(xí)。我們還花了很多精力來(lái)提出簡(jiǎn)短而富有表現(xiàn)力的名稱(chēng),這些名稱(chēng)很好地映射到底層的 Plotly.py 屬性,以便于在工作流程中稍后調(diào)整到交互的圖表中。

          最后,Plotly Express 作為一個(gè)新的 Python 可視化庫(kù),在 Plotly 生態(tài)系統(tǒng)下,將會(huì)迅速發(fā)展。所以不要猶豫,立即開(kāi)始使用 Plotly Express 吧!

          PS公號(hào)內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計(jì)劃!


          老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點(diǎn)一下,如果感覺(jué)文章內(nèi)容不錯(cuò)的話,記得分享朋友圈讓更多的人知道!


          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  小早川怜子一区二区三区 | 台湾长腿美人ladyyuan | 五月月色色网网 | 91五月天色 | 九色丨老熟女丨91啦 |