随机生成2行5列成绩,绘制分组柱状图,柱宽0.4,一组为一门课成绩对应一列成绩,一行为一名学生成绩,分别标识为“zhangsan”,“lisi”,
时间: 2024-11-27 21:22:42 浏览: 7
在Python中,你可以使用matplotlib库来实现这个需求。首先,你需要生成一些随机的成绩数据,然后使用pandas处理数据并创建DataFrame。接着,利用matplotlib的`bar()`函数绘制分组柱状图。以下是一个示例代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 生成随机成绩数据
students = ["zhangsan", "lisi"]
courses = ['课程A', '课程B', '课程C', '课程D', '课程E']
scores = {student: np.random.randint(60, 101, size=5) for student in students}
# 创建DataFrame
df = pd.DataFrame(scores, index=students, columns=courses)
# 绘制分组柱状图
fig, ax = plt.subplots()
ax.bar(df.columns, df.values.T, width=0.4, label='分数')
ax.set_xlabel('课程')
ax.set_ylabel('分数')
ax.set_title('学生分组成绩柱状图')
ax.set_xticks(df.columns)
ax.set_xticklabels(ax.get_xticklabels(), rotation=45) # 标签旋转避免重叠
ax.legend()
plt.show()
```
在这个例子中,`np.random.randint(60, 101, size=5)`用于生成每个学生的五门课成绩。`df.values.T`将数据转置,以便一行代表一个学生,一列表示一门课。最后,通过设置`width=0.4`调整柱状图的宽度。
阅读全文