答:
要绘制叠加条状图,展示每个姓名在不同日期中取用不同类型车辆的频次,且使用不同颜色分别表示两种车辆(如“货车”和“轿车”),可以按照以下步骤来完成:
- 数据整理:首先需要将数据整理成可以按姓名、车辆类型统计频次的格式。
- 绘制叠加条状图:使用
matplotlib 和 pandas 库来绘制图表。
代码示例
假设你的数据保存在一个 pandas DataFrame 中,可以按照以下步骤操作:
import pandas as pd
import matplotlib.pyplot as plt
# 构建示例数据
data = {
'日期': ['2024/1/1'] * 12,
'姓名': ['赵甲', '钱乙', '孙丙', '赵甲', '孙丙', '孙丙', '赵甲', '孙丙', '钱乙', '赵甲', '孙丙', '孙丙'],
'取用车辆': ['货车', '轿车', '货车', '货车', '轿车', '货车', '货车', '轿车', '货车', '货车', '轿车', '轿车']
}
df = pd.DataFrame(data)
# 按姓名和车辆类型统计频次
vehicle_counts = df.groupby(['姓名', '取用车辆']).size().unstack(fill_value=0)
# 绘制叠加条状图
ax = vehicle_counts.plot(kind='bar', stacked=True, color=['skyblue', 'orange'], figsize=(10, 6))
# 设置图表标题和标签
ax.set_title('不同姓名取用车辆频次分布')
ax.set_xlabel('姓名')
ax.set_ylabel('频次')
# 显示图表
plt.tight_layout()
plt.show()
解释:
- 数据整理:我们使用
groupby() 方法按 姓名 和 取用车辆 进行分组,并用 size() 计算每组的大小。然后,使用 unstack() 将车辆类型作为列,行作为姓名,生成一个数据透视表,填充空值为 0。 - 叠加条状图:
plot(kind='bar', stacked=True) 绘制了叠加的条形图。color=['skyblue', 'orange'] 指定了不同车辆类型的颜色。 - 显示图表:
plt.tight_layout() 调整布局,避免标签重叠。
结果:
图表的横轴为姓名,纵轴为频次,且每个人的柱状图会分为两部分,分别代表“货车”和“轿车”的取用频次。