您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用Python繪制瀑布圖”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用Python繪制瀑布圖”文章能幫助大家解決問題。
首先先安裝所需的庫:
pip install waterfallcharts (注意該庫名) pip install waterfall_ax (注意該庫名) pip install plotly
接著導入要搭配使用的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
準備一些模擬數據,用于后續不同的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
庫,它是基于 Matplotlib 來創建靈活的瀑布圖。
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="人生苦短,快學Python!")
需要注意一點,waterfall_ax
這個庫使用的是 Python 列表,所以在上面代碼中我們將Pandas的"users"列通過to_list
轉為了列表。
此外,我們還可以增加更多的參數,如下所示:
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="人生苦短,快學Python!")
方法二是使用waterfall_chart
庫,不過會較上一個方法多一個步驟,即需要加一個包含增量的列[2]。如下所示,我們可以向dataframe中添加一個新列并計算得到增量diff
。
import waterfall_chart df_1 = df.copy() df_1["delta"] = df_1["users"].diff().fillna(100) df_1
在交互式環境中輸入如下命令,
waterfall_chart.plot(df_1["time"], df_1["delta"])
運行輸出:
waterfall_chart
庫同樣也可以增加其他參數,本文不再做單獨展示。
前面的兩種方法相對來說比較小眾一點,那么方法三用到的plotly
庫大家一定都比較熟悉。與waterfall_chart
庫一樣,在繪制之前也需要多一步進行數據處理。
df_2 = df_1.copy() df_2["delta_text"] = df_2["delta"].astype(str) df_2["measure"] = ["absolute"] + (["relative"] * 12) df_2
在交互式環境中輸入如下命令:
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="人生苦短,快學Python!", showlegend=False ) fig.show()
使用plotly
庫有一個非常大的優勢,這些圖是完全交互的,我們可以放大,也可以通過選項來獲取更多信息,如下圖所示。
另外,與之前兩種方法繪制的圖相比,剛剛plotly
庫繪制的圖少了一個“柱子”顯示凈/總計。可以這樣處理:
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代碼實際上并未改變,唯一的區別是我們使用的DataFrame增加一個額外行。
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="人生苦短,快學Python!", showlegend=False ) fig.show()
關于“怎么使用Python繪制瀑布圖”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。