日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

吹爆了这个可视化神器,上手后直接开大~

發布時間:2024/9/15 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吹爆了这个可视化神器,上手后直接开大~ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


今天給大家推薦一個可視化神器 - Plotly_express ,上手非常的簡單,基本所有的圖都只要一行代碼就能繪出一張非常酷炫的可視化圖。

以下是這個神器的詳細使用方法,文中附含大量的 GIF 動圖示例圖。

注:源代碼( .ipypnb 文件)的獲取方式,我放在文末了。記得下載

1. 環境準備

本文的是在如下環境下測試完成的。

  • Python3.7

  • Jupyter notebook

  • Pandas1.1.3

  • Plotly_express0.4.1

其中 Plotly_express0.4.1 是本文的主角,安裝它非常簡單,只需要使用 pip install 就可以

$?python3?-m?pip?install?plotly_express

2. 工具概述

在說?plotly_express之前,我們先了解下plotly。Plotly是新一代的可視化神器,由TopQ量化團隊開源。雖然Ploltly功能非常之強大,但是一直沒有得到重視,主要原因還是其設置過于繁瑣。因此,Plotly推出了其簡化接口:Plotly_express,下文中統一簡稱為px。

px是對Plotly.py的一種高級封裝,其內置了很多實用且現代的繪圖模板,用戶只需要調用簡單的API函數即可實用,從而快速繪制出漂亮且動態的可視化圖表。

px是完全免費的,用戶可以任意使用它。最重要的是,px和plotly生態系統的其他部分是完全兼容的。用戶不僅可以在Dash中使用,還能通過Orca將數據導出為幾乎任意文件格式。

官網的學習資料:https://plotly.com/

px的安裝是非常簡單的,只需要通過pip install plotly_express來安裝即可。安裝之后的使用:

import?plotly_express?as?px??

3. 開始繪圖

接下來我們通過px中自帶的數據集來繪制各種精美的圖形。

  • gapminder

  • tips

  • wind

3.1 數據集

首先我們看下px中自帶的數據集:

import?pandas?as?pd import?numpy?as?np import?plotly_express?as?px??#?現在這種方式也可行:import plotly.express as px#?數據集 gapminder?=?px.data.gapminder() gapminder.head()??#?取出前5條數據

我們看看全部屬性值:

3.2 線型圖

線型圖line在可視化制圖中是很常見的。利用px能夠快速地制作線型圖:

#?line?圖 fig?=?px.line(gapminder,??#?數據集x="year",??#?橫坐標y="lifeExp",??#?縱坐標color="continent",??#?顏色的數據line_group="continent",??#?線性分組hover_name="country",???#?懸停hover的數據line_shape="spline",??#?線的形狀render_mode="svg"??#?生成的圖片模式 ) fig.show()

再來制作面積圖:

#?area?圖 fig?=?px.area(gapminder,??#?數據集x="year",??#?橫坐標y="pop",??#?縱坐標color="continent",???#?顏色line_group="country"??#?線性組別 ) fig.show()

3.3 散點圖

散點圖的制作調用scatter方法:

指定size參數還能改變每個點的大小:

px.scatter(gapminder2007???#?繪圖DataFrame數據集,x="gdpPercap"??#?橫坐標,y="lifeExp"??#?縱坐標,color="continent"??#?區分顏色,size="pop"???#?區分圓的大小,size_max=60??#?散點大小 )

通過指定facet_col、animation_frame參數還能將散點進行分塊顯示:

px.scatter(gapminder???#?繪圖使用的數據,x="gdpPercap"?#?橫縱坐標使用的數據,y="lifeExp"??#?縱坐標數據,color="continent"??#?區分顏色的屬性,size="pop"???#?區分圓的大小,size_max=60??#?圓的最大值,hover_name="country"??#?圖中可視化最上面的名字,animation_frame="year"??#?橫軸滾動欄的屬性year,animation_group="country"??#?標注的分組,facet_col="continent"???#?按照國家country屬性進行分格顯示,log_x=True??#?橫坐標表取對數,range_x=[100,100000]??#?橫軸取值范圍,range_y=[25,90]??#?縱軸范圍,labels=dict(pop="Populations",??#?屬性名字的變化,更直觀gdpPercap="GDP?per?Capital",lifeExp="Life?Expectancy") )

3.4 地理數據繪圖

在實際的工作中,我們可能會接觸到中國地圖甚至是全球地圖,使用px也能制作:

px.choropleth(gapminder,??#?數據集locations="iso_alpha",??#?配合顏色color顯示color="lifeExp",?#?顏色的字段選擇hover_name="country",??#?懸停字段名字animation_frame="year",??#?注釋color_continuous_scale=px.colors.sequential.Plasma,??#?顏色變化projection="natural?earth"??#?全球地圖)

fig?=?px.scatter_geo(gapminder,???#?數據locations="iso_alpha",??#?配合顏色color顯示color="continent",?#?顏色hover_name="country",?#?懸停數據size="pop",??#?大小animation_frame="year",??#?數據幀的選擇projection="natural?earth"??#?全球地圖)fig.show()

??px.scatter_geo(gapminder,?#?數據集locations="iso_alpha",??#?配和color顯示顏色color="continent",??#?顏色的字段顯示hover_name="country",??#?懸停數據size="pop",??#?大小animation_frame="year"??#?數據聯動變化的選擇#,projection="natural?earth"???#?去掉projection參數 )

使用line_geo來制圖:

fig?=?px.line_geo(gapminder2007,??#?數據集locations="iso_alpha",??#?配合和color顯示數據color="continent",??#?顏色projection="orthographic")???#?球形的地圖 fig.show()

3.5 使用內置iris數據

我們先看看怎么使用px來查看內置數據的文檔:

選擇兩個屬性制圖

選擇兩個屬性作為橫縱坐標來繪制散點圖

fig?=?px.scatter(iris,??#?數據集x="sepal_width",??#?橫坐標y="sepal_length"??#?縱坐標) fig.show()

通過color參數來顯示不同的顏色:

3.6 聯合分布圖

我們一個圖形中能夠將散點圖和直方圖組合在一起顯示:

px.scatter(iris,??#?數據集x="sepal_width",?#?橫坐標y="sepal_length",??#?縱坐標color="species",??#?顏色marginal_x="histogram",??#?橫坐標直方圖marginal_y="rug"???#?細條圖 )

3.7 小提琴圖

小提琴圖能夠很好的顯示數據的分布和誤差情況,一行代碼利用也能顯示小提琴圖:

px.scatter(iris,??#?數據集x="sepal_width",??#?橫坐標y="sepal_length",??#?縱坐標color="species",??#?顏色marginal_y="violin",??#?縱坐標小提琴圖marginal_x="box",??#?橫坐標箱型圖trendline="ols"??#?趨勢線 )

3.8 散點矩陣圖

px.scatter_matrix(iris,??#?數據dimensions=["sepal_width","sepal_length","petal_width","petal_length"],??#?維度選擇color="species")??#?顏色

3.9 平行坐標圖

px.parallel_coordinates(iris,???#?數據集color="species_id",??#?顏色labels={"species_id":"Species",??#?各種標簽值"sepal_width":"Sepal?Width","sepal_length":"Sepal?Length","petal_length":"Petal?Length","petal_width":"Petal?Width"},color_continuous_scale=px.colors.diverging.Tealrose,color_continuous_midpoint=2)

3.10 箱體誤差圖

#?對當前值加上下兩個誤差值 iris["e"]?=?iris["sepal_width"]?/?100 px.scatter(iris,??#?繪圖數據集x="sepal_width",??#?橫坐標y="sepal_length",??#?縱坐標color="species",??#?顏色值error_x="e",??#?橫軸誤差error_y="e"??#?縱軸誤差)

3.11 等高線圖

等高線圖反映數據的密度情況:

px.density_contour(iris,??#?繪圖數據集x="sepal_width",??#?橫坐標y="sepal_length",??#?縱坐標值color="species"??#?顏色 )

等高線圖和直方圖的倆和使用:

px.density_contour(iris,?#?數據集x="sepal_width",??#?橫坐標值y="sepal_length",??#?縱坐標值color="species",??#?顏色marginal_x="rug",??#?橫軸為線條圖marginal_y="histogram"???#?縱軸為直方圖)

3.12 密度熱力圖

px.density_heatmap(iris,??#?數據集x="sepal_width",???#?橫坐標值y="sepal_length",??#?縱坐標值marginal_y="rug",??#?縱坐標值為線型圖marginal_x="histogram"??#?直方圖)

3.13 并行類別圖

在接下來的圖形中我們使用的小費tips實例,首先是導入數據:

fig?=?px.parallel_categories(tips,??#?數據集?color="size",??#?顏色color_continuous_scale=px.colors.sequential.Inferno)??#?顏色變化取值 fig.show()

3.14 柱狀圖

fig?=?px.bar(tips,??#?數據集x="sex",??#?橫軸y="total_bill",??#?縱軸color="smoker",??#?顏色參數取值barmode="group",??#?柱狀圖模式取值facet_row="time",??#?行取值facet_col="day",??#?列元素取值category_orders={"day":?["Thur","Fri","Sat","Sun"],??#?分類順序"time":["Lunch",?"Dinner"]}) fig.show()

3.15 直方圖

fig?=?px.histogram(tips,??#?繪圖數據集x="sex",??#?橫軸為性別y="tip",??#?縱軸為費用histfunc="avg",??#?直方圖顯示的函數color="smoker",??#?顏色barmode="group",??#?柱狀圖模式facet_row="time",??#?行取值facet_col="day",???#?列取值category_orders={??#?分類順序"day":["Thur","Fri","Sat","Sun"],"time":["Lunch","Dinner"]} )fig.show()

3.16 箱型圖

箱型圖也是現實數據的誤差和分布情況:

#?notched=True顯示連接處的錐形部分 px.box(tips,??#?數據集x="day",??#?橫軸數據y="total_bill",??#?縱軸數據color="smoker",??#?顏色notched=True)??#?連接處的錐形部分顯示出來 px.box(tips,??#?數據集x="day",??#?橫軸y="total_bill",??#?縱軸?color="smoker",??#?顏色 #?????????notched=True???#?隱藏參數)

再來畫一次小提琴圖:

px.violin(tips,???#?數據集x="smoker",??#?橫軸坐標y="tip",??#?縱軸坐標??color="sex",???#?顏色參數取值box=True,???#?box是顯示內部的箱體points="all",??#?同時顯示數值點hover_data=tips.columns)??#?結果中顯示全部數據

3.17 極坐標圖

在這里我們使用的是內置的wind數據:

散點極坐標圖

線性極坐標圖

fig?=?px.line_polar(wind,??#?數據集r="frequency",??#?半徑theta="direction",??#?角度color="strength",??#?顏色line_close=True,??#?線性閉合color_discrete_sequence=px.colors.sequential.Plasma_r)??#?顏色變化 fig.show()

柱狀極坐標圖

fig?=?px.bar_polar(wind,???#?數據集r="frequency",???#?半徑theta="direction",??#?角度color="strength",??#?顏色template="plotly_dark",??#?主題color_discrete_sequence=px.colors.sequential.Plasma_r)??#?顏色變化 fig.show()

4. 顏色面板

在px中有很多的顏色可以供選擇,提供了一個顏色面板:

px.colors.qualitative.swatches() px.colors.sequential.swatches()

5. 主題

px中存在3種主題:

  • plotly

  • plotly_white

  • plotly_dark

px.scatter(iris,??#?數據集x="sepal_width",??#?橫坐標值y="sepal_length",??#?縱坐標取值color="species",??#?顏色marginal_x="box",??#?橫坐標為箱型圖marginal_y="histogram",??#?縱坐標為直方圖height=600,??#?高度trendline="ols",??#?顯示趨勢線template="plotly")??#?主題 px.scatter(iris,??#?數據集x="sepal_width",??#?橫坐標值y="sepal_length",??#?縱坐標取值color="species",??#?顏色marginal_x="box",??#?橫坐標為箱型圖marginal_y="histogram",??#?縱坐標為直方圖height=600,??#?高度trendline="ols",??#?顯示趨勢線template="plotly_white")??#?主題???? px.scatter(iris,??#?數據集x="sepal_width",??#?橫坐標值y="sepal_length",??#?縱坐標取值color="species",??#?顏色marginal_x="box",??#?橫坐標為箱型圖marginal_y="histogram",??#?縱坐標為直方圖height=600,??#?高度trendline="ols",??#?顯示趨勢線template="plotly_dark")??#?主題???

6. 總結一下

本文中利用大量的篇幅講解了如何通過plotly_express來繪制:柱狀圖、線型圖、散點圖、小提琴圖、極坐標圖等各種常見的圖形。通過觀察上面Plotly_express繪制圖形過程,我們不難發現它有三個主要的優點:

  • 快速出圖,少量的代碼就能滿足多數的制圖要求。基本上都是幾個參數的設置我們就能快速出圖

  • 圖形漂亮,繪制出來的可視化圖形顏色亮麗,也有很多的顏色供選擇。

  • 圖形是動態可視化的。文章中圖形都是截圖,如果是在Jupyter notebook中都是動態圖形

希望通過本文的講解能夠幫助堵住快速入門plotly_express可視化神器


本文源代碼:

鏈接: https://pan.baidu.com/s/1tEi1vRLEem-Ti1wYmoGoBg??

密碼: 1wpm

往期推薦: 收藏 | 49 個 Python 學習資源我都逛哪些技術網站?(程序員必備58個網站匯總)肝!精心整理了 50 個數據源網站!

總結

以上是生活随笔為你收集整理的吹爆了这个可视化神器,上手后直接开大~的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。