您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用Python繪制瀑布圖”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“怎么使用Python繪制瀑布圖”文章能幫助大家解決問題。
首先先安裝所需的庫:
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
庫,它是基于 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
庫,不過會(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ú)展示。
前面的兩種方法相對(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()
關(guān)于“怎么使用Python繪制瀑布圖”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(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)容。