欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文教你如何使用Python繪制瀑布圖

 更新時(shí)間:2023年04月19日 09:12:15   作者:快學(xué)Python  
什么是瀑布圖?瀑布圖用表達(dá)兩個(gè)數(shù)值之間的變化過程,過程值為正的時(shí)候,向上加,過程值為負(fù)的時(shí)候向下減。本文就帶大家學(xué)習(xí)一下如何用Python繪制瀑布圖吧

什么是瀑布圖?瀑布圖用表達(dá)兩個(gè)數(shù)值之間的變化過程,過程值為正的時(shí)候,向上加,過程值為負(fù)的時(shí)候向下減[1]。

今天分享在Python中繪制瀑布圖的3種簡(jiǎn)單方法(使用不同的庫)!

前期準(zhǔn)備

首先先安裝所需的庫:

pip?install?waterfallcharts?(注意該庫名)
pip?install?waterfall_ax?(注意該庫名)
pip?install?plotly

接著導(dǎo)入要搭配使用的Pandas庫和Matplotlib庫:

import?pandas?as?pd
import?matplotlib.pyplot?as?plt
plt.rcParams["figure.figsize"]?=?(16,?8)
plt.rcParams['font.sans-serif']?=?['SimHei']
plt.rcParams['axes.unicode_minus']?=?False

準(zhǔn)備一些模擬數(shù)據(jù),用于后續(xù)不同的Python庫繪制瀑布圖。

df?=?pd.DataFrame(
????data={
????????"time":?["2021?end",?"Jan",?"Feb",?"Mar",?"Apr",?"May",?"Jun",?"Jul",?"Aug",?"Sep",?"Oct",?"Nov",?"Dec"],
????????"users":?[100,?120,?110,?150,?160,?190,?240,?200,?230,?240,?250,?280,?300]
????}
)

方法一:waterfall_ax

首先我們使用waterfall_ax庫,它是基于 Matplotlib 來創(chuàng)建靈活的瀑布圖。

https://github.com/microsoft/waterfall_ax

from?waterfall_ax?import?WaterfallChart
fig,?ax?=?plt.subplots(1,?1,?figsize=(16,?8))
waterfall?=?WaterfallChart(df["users"].to_list())
wf_ax?=?waterfall.plot_waterfall(ax=ax,?title="人生苦短,快學(xué)Python!")

需要注意一點(diǎn),waterfall_ax這個(gè)庫使用的是 Python 列表,所以在上面代碼中我們將Pandas的"users"列通過to_list轉(zhuǎn)為了列表。

此外,我們還可以增加更多的參數(shù),如下所示:

fig,?ax?=?plt.subplots(1,?1,?figsize=(16,?8))
waterfall?=?WaterfallChart(
????df["users"].to_list(),
????step_names=df["time"].to_list(),?
????metric_name="#?users",?
????last_step_label="now"
)
wf_ax?=?waterfall.plot_waterfall(ax=ax,?title="人生苦短,快學(xué)Python!")

方法二:waterfall_chart

方法二是使用waterfall_chart庫,不過會(huì)較上一個(gè)方法多一個(gè)步驟,即需要加一個(gè)包含增量的列[2]。如下所示,我們可以向dataframe中添加一個(gè)新列并計(jì)算得到增量diff。

import?waterfall_chart
df_1?=?df.copy()
df_1["delta"]?=?df_1["users"].diff().fillna(100)
df_1

在交互式環(huán)境中輸入如下命令,

waterfall_chart.plot(df_1["time"],?df_1["delta"])

運(yùn)行輸出:

waterfall_chart庫同樣也可以增加其他參數(shù),本文不再做單獨(dú)展示。

方法三:plotly

前面的兩種方法相對(duì)來說比較小眾一點(diǎn),那么方法三用到的plotly庫大家一定都比較熟悉。與waterfall_chart庫一樣,在繪制之前也需要多一步進(jìn)行數(shù)據(jù)處理。

df_2?=?df_1.copy()
df_2["delta_text"]?=?df_2["delta"].astype(str)
df_2["measure"]?=?["absolute"]?+?(["relative"]?*?12)
df_2

在交互式環(huán)境中輸入如下命令:

fig?=?go.Figure(
????go.Waterfall(
????????measure=df_2["measure"],
????????x=df_2["time"],
????????textposition="outside",
????????text=df_2["delta_text"],
????????y=df_2["delta"],
????)
)

fig.update_layout(
????title="人生苦短,快學(xué)Python!",
????showlegend=False
)

fig.show()

使用plotly庫有一個(gè)非常大的優(yōu)勢(shì),這些圖是完全交互的,我們可以放大,也可以通過選項(xiàng)來獲取更多信息,如下圖所示。

另外,與之前兩種方法繪制的圖相比,剛剛plotly庫繪制的圖少了一個(gè)“柱子”顯示凈/總計(jì)??梢赃@樣處理:

total_row?=?pd.DataFrame(
????data={
????????"time":?"now",?
????????"users":?0,?
????????"delta":0,?
????????"delta_text":?"",?
????????"measure":?"total"
????},?
????index=[0]
)
df_3?=?pd.concat([df_2,?total_row],?ignore_index=True)

用于生成瀑布圖的Python代碼實(shí)際上并未改變,唯一的區(qū)別是我們使用的DataFrame增加一個(gè)額外行。

fig?=?go.Figure(
????go.Waterfall(
????????measure=df_3["measure"],
????????x=df_3["time"],
????????textposition="outside",
????????text=df_3["delta_text"],
????????y=df_3["delta"],
????)
)

fig.update_layout(
????title="人生苦短,快學(xué)Python!",
????showlegend=False
)

fig.show()

運(yùn)行輸出:

如果你對(duì)使用plotly 繪制瀑布圖感興趣,可以訪問鏈接https://plotly.com/python/waterfall-charts/了解更多。

以上就是一文教你如何使用Python繪制瀑布圖的詳細(xì)內(nèi)容,更多關(guān)于Python繪制瀑布圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python如何爬取b站熱門視頻并導(dǎo)入Excel

    Python如何爬取b站熱門視頻并導(dǎo)入Excel

    這篇文章主要介紹了Python如何爬取b站熱門視頻并導(dǎo)入Excel,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python csv實(shí)時(shí)一條一條插入且表頭不重復(fù)問題

    python csv實(shí)時(shí)一條一條插入且表頭不重復(fù)問題

    這篇文章主要介紹了python csv實(shí)時(shí)一條一條插入且表頭不重復(fù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python之?dāng)?shù)字圖像處理方式

    python之?dāng)?shù)字圖像處理方式

    這篇文章主要介紹了python之?dāng)?shù)字圖像處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 在python?腳本下解析json數(shù)據(jù)

    在python?腳本下解析json數(shù)據(jù)

    這篇文章主要介紹了在python?腳本下解析json數(shù)據(jù),json數(shù)據(jù)包括JSONObject和JSONArray,下文關(guān)于其解析的內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • Python?Logistic邏輯回歸算法使用詳解

    Python?Logistic邏輯回歸算法使用詳解

    這篇文章主要介紹了Python?Logistic邏輯回歸算法使用的方法和原理,Logistic雖然不是十大經(jīng)典算法之一,但卻是數(shù)據(jù)挖掘中常用的有力算法,所以這里也專門進(jìn)行了學(xué)習(xí),需要的朋友可以參考下
    2021-06-06
  • 基于python腳本實(shí)現(xiàn)軟件的注冊(cè)功能(機(jī)器碼+注冊(cè)碼機(jī)制)

    基于python腳本實(shí)現(xiàn)軟件的注冊(cè)功能(機(jī)器碼+注冊(cè)碼機(jī)制)

    用戶運(yùn)行程序后,通過文件自動(dòng)檢測(cè)認(rèn)證狀態(tài),如果未經(jīng)認(rèn)證,就需要注冊(cè)。這篇文章主要介紹了基于python腳本實(shí)現(xiàn)軟件的注冊(cè)功能(機(jī)器碼+注冊(cè)碼機(jī)制)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • jupyter?notebook內(nèi)核啟動(dòng)失敗問題及解決方法

    jupyter?notebook內(nèi)核啟動(dòng)失敗問題及解決方法

    這篇文章主要介紹了解決jupyter?notebook內(nèi)核啟動(dòng)失敗問題,本文給大家介紹了問題原因分析及解決方案,圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Python Asyncio調(diào)度原理詳情

    Python Asyncio調(diào)度原理詳情

    這篇文章主要介紹了Python Asyncio調(diào)度原理詳情,Python.Asyncio是一個(gè)大而全的庫,它包括很多功能,而跟核心調(diào)度相關(guān)的邏輯除了三種可等待對(duì)象外,還有其它一些功能,它們分別位于runners.py,base_event.py,event.py三個(gè)文件中
    2022-06-06
  • pytorch顯存一直變大的解決方案

    pytorch顯存一直變大的解決方案

    這篇文章主要介紹了pytorch顯存一直變大的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能

    Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能

    tkinter是一個(gè)跨平臺(tái)的GUI庫,開發(fā)的程序可以在win,linux或者mac下運(yùn)行,tkinter是python自帶的GUI庫,是對(duì)圖形庫TK的封裝。本文通過實(shí)例代碼給大家介紹Python3 tkinter 實(shí)現(xiàn)文件讀取及保存功能,感興趣的朋友跟隨小編一起看看吧
    2019-09-09

最新評(píng)論