使用Matplotlib可以在条形图上绘制Pandas数据框架的多列数据。下面就来详细讲解。
首先,我们需要先导入相关的库和数据。以一个数据框架为例:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({
'name': ['Tom', 'Mike', 'Lisa', 'Jack'],
'score1': [80, 85, 70, 90],
'score2': [70, 75, 65, 80],
'score3': [90, 80, 75, 95]
})
数据框架包括四列:name
列、score1
列、score2
列和score3
列。其中,name
列用于标识每个条形,score1
、score2
和score3
三列数据用于在条形图上绘制多个条形,表示每个学生在三个科目上的成绩。
接下来,我们需要计算每个学生的总成绩,并按照总成绩由高到低对学生排序:
df['total'] = df['score1'] + df['score2'] + df['score3'] # 计算每个学生的总成绩
df = df.sort_values(by='total', ascending=False) # 按照总成绩由高到低对学生排序
经过排序后,数据框架的顺序变成了Jack
、Mike
、Tom
、Lisa
。
接下来,我们使用Matplotlib在条形图上绘制三个成绩数据。具体步骤如下:
# 设置图表的大小和字体大小
plt.figure(figsize=(8, 6), dpi=80)
plt.rcParams['font.size'] = 12
# 选择绘制的列
cols = ['score1', 'score2', 'score3']
# 绘制条形图
for i, col in enumerate(cols):
plt.bar(df['name'], df[col], label=col, alpha=0.8-i*0.1)
# 添加标题、横纵坐标轴标题,并显示图例
plt.title("Student Scores")
plt.xlabel("Student")
plt.ylabel("Score")
plt.legend(loc='upper right')
# 显示图表
plt.show()
上述代码中,plt.figure
函数用于设置图表的大小和分辨率,plt.rcParams['font.size']
函数用于设置字体大小。cols
选择我们要绘制的三列数据,enumerate
函数可以迭代得到每个列的索引和列名。plt.bar
函数用于绘制条形图,其中alpha
参数控制颜色的透明度,可以设置不同参数实现多列数据的区分。最后,我们添加标题、横纵坐标轴标题并显示图例,使用plt.show
函数显示图表。
通过上述步骤,我们就可以得到一张条形图,图中包含了每个学生在三个科目上的成绩,分别用不同颜色的条形区分。
总体思路是计算好总成绩,然后对总成绩进行排序,最后选择要绘制的列绘制条形图,并使用图例区分绘制的多个条形。