【matplotlib 實戰】--柱狀圖

wang_yb發表於2023-10-07

柱狀圖,是一種使用矩形條,對不同類別進行數值比較的統計圖表。
在柱狀圖上,分類變數的每個實體都被表示為一個矩形(通俗講即為“柱子”),而數值則決定了柱子的高度。

1. 主要元素

柱狀圖是一種用長方形柱子表示資料的圖表。
它包含三個主要元素:

  1. 橫軸(x軸):表示資料的類別或時間。
  2. 縱軸(y軸):表示資料的數量或百分比。
  3. 柱子:用於表示每個資料類別或時間段的數量或百分比,柱子的高度與資料的大小成比例。

image.png

2. 適用的場景

柱狀圖適用於以下分析場景:

  1. 比較不同類別或時間段的數量或百分比。
  2. 顯示資料的分佈情況,如資料的最大值、最小值、平均值等。
  3. 強調資料的變化趨勢。
  4. 比較不同組之間的差異。
  5. 分析資料的增長或下降情況。

3. 不適用的場景

柱狀圖不適用於以下分析場景:

  1. 資料之間存在比例關係,如佔比、比率等,此時應該使用餅圖或堆積圖。
  2. 資料之間存在時間序列關係,此時應該使用折線圖。
  3. 資料之間存在空間關係,此時應該使用地圖。
  4. 資料之間存在相關性關係,此時應該使用散點圖。

4. 分析實戰

這次選用王者榮耀2023年KPL春季賽戰隊資料:https://databook.top/wzry/2023-spring

4.1. 資料來源

fp = "d:/share/league-2023春季賽.csv"

df = pd.read_csv(fp)
df.loc[:, ["排名", "戰隊", "比賽場次", "勝場"]]

image.png

4.2. 資料清理

本次實戰用柱狀圖展示前6名的比賽場次和勝場,也就是每個戰隊有2個柱子。

df.loc[:5, ["排名", "戰隊", "比賽場次", "勝場"]]

image.png

4.3. 分析結果視覺化

data = df.loc[:5, ["排名", "戰隊", "比賽場次", "勝場"]]

with plt.style.context("seaborn-v0_8"):
    fig = plt.figure()
    ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

    teams = data["戰隊"].tolist()    
    games = {
        "比賽場次": data["比賽場次"].tolist(),
        "勝場": data["勝場"].tolist(),
    }
    width = 0.25
    multiplier = 0

    x = np.arange(len(teams))
    for name, vals in games.items():
        offset = width*multiplier
        rects = ax.bar(x+offset, vals, width, label=name)
        ax.bar_label(rects, padding=3)
        multiplier+=1


    ax.set_title("2023-KPL春季賽前六名")
    ax.set_xticks(x+0.1, teams)
    ax.legend(loc="upper left")

image.png

第一名重慶狼隊,比賽場次總數倒數第二,但是勝場數確實第一,勝率明顯高於其他隊伍,不愧是冠軍隊伍。

戰隊,選手和各個英雄的資料都已經整理好分享在上面的URL中,感興趣的話可以自己分析看看其他資料情況。

相關文章