Pandas 在 Matplotlib 柱状图上绘制多列图

Suraj Joshi 2024年2月15日
  1. 在单条形图中为每个观测值绘制多列的条形图
  2. 叠加单条形图中每个观测值的多列条形图
Pandas 在 Matplotlib 柱状图上绘制多列图

在本教程中,我们将介绍如何使用 DataFrame 对象的 plot() 方法在柱状图上绘制多列。

import pandas as pd

data = [
    ["Rudra", 23, 156, 70],
    ["Nayan", 20, 136, 60],
    ["Alok", 15, 100, 35],
    ["Prince", 30, 150, 85],
]

df = pd.DataFrame(data, columns=["Name", "Age", "Height(cm)", "Weight(kg)"])
print(df)

输出:

     Name  Age  Height(cm)  Weight(kg)
0   Rudra   23         156          70
1   Nayan   20         136          60
2    Alok   15         100          35
3  Prince   30         150          85

我们将使用 DataFrame df 来构建条形图。我们需要在一个条形图上绘制 DataFrame 中每个人的年龄、身高和体重。

在单条形图中为每个观测值绘制多列的条形图

import pandas as pd
import matplotlib.pyplot as plt

data = [
    ["Rudra", 23, 156, 70],
    ["Nayan", 20, 136, 60],
    ["Alok", 15, 100, 35],
    ["Prince", 30, 150, 85],
]

df = pd.DataFrame(data, columns=["Name", "Age", "Height(cm)", "Weight(kg)"])
df.plot(x="Name", y=["Age", "Height(cm)", "Weight(kg)"], kind="bar", figsize=(9, 8))
plt.show()

输出:

绘制单条形图中每个观测值的多列条形图

它使用 df 对象的 plot() 方法为数据框 df 中的每个人生成 AgeHeightWeight 的条形图。我们在方法中传递一个要在柱状图中绘制的所有列的列表作为 y 参数,kind="bar"将为 df 生成一个柱状图。x 参数将沿 X 轴变化。

叠加单条形图中每个观测值的多列条形图

import pandas as pd
import matplotlib.pyplot as plt

employees = ["Rudra", "Alok", "Prince", "Nayan", "Reman"]
earnings = {
    "January": [10, 20, 15, 18, 14],
    "February": [20, 13, 10, 18, 15],
    "March": [20, 20, 10, 15, 18],
}

df = pd.DataFrame(earnings, index=employees)

df.plot(kind="bar", stacked=True, figsize=(10, 8))
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()

输出:

单一柱状图中每个观测值的多列叠加柱状图

它通过将 DataFrame 中每个索引的一列值叠加在另一列上来显示条形图。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn