溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用Python繪制瀑布圖

發(fā)布時(shí)間:2023-04-20 09:18:01 來源:億速云 閱讀:75 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“怎么使用Python繪制瀑布圖”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“怎么使用Python繪制瀑布圖”文章能幫助大家解決問題。

前期準(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)來獲取更多信息,如下圖所示。

怎么使用Python繪制瀑布圖

另外,與之前兩種方法繪制的圖相比,剛剛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()

關(guān)于“怎么使用Python繪制瀑布圖”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI