假设有一个包含学生姓名、年级和上网时长段的 DataFrame,根据这个dataframe绘制不同年纪不同上网时长段进行统计并绘制一张条形图,每个分类有不同的颜色人
时间: 2024-02-12 09:03:29 浏览: 97
origin绘制不同颜色分类图形方法
好的,这个问题需要根据年级和上网时长段来绘制一张条形统计图,并且每个分类有不同的颜色。你可以使用`pandas`库中的`DataFrame`类来读取数据并进行统计。接下来,使用`matplotlib`库来绘制条形统计图。
以下是一个示例代码,你可以参考一下:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('data.csv')
# 统计每个分类的频数
counts = data.groupby(['grade', 'duration']).size().reset_index(name='count')
# 设置不同颜色
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
# 绘制条形图
fig, ax = plt.subplots(figsize=(10, 6))
# 迭代每个年级
for i, grade in enumerate(counts['grade'].unique()):
# 获取该年级的数据
df = counts[counts['grade'] == grade]
# 绘制该年级的条形图
for j, duration in enumerate(df['duration']):
count = df.loc[df['duration'] == duration, 'count'].iloc[0]
ax.bar(i + j*0.1, count, color=colors[j], label=f'{duration}')
# 添加图例、标题等
ax.legend()
ax.set_xticks(range(len(counts['grade'].unique())))
ax.set_xticklabels(counts['grade'].unique())
ax.set_xlabel('Grade')
ax.set_ylabel('Count')
ax.set_title('Internet Usage by Grade and Duration')
# 显示图形
plt.show()
```
其中,`data.csv`是你的数据文件,它应该包含三列:`name`、`grade` 和 `duration`。`counts`是一个新的`DataFrame`,用于统计每个分类的频数,并且`colors`是你想要的不同颜色。
使用`unique()`函数来迭代每个年级,然后使用`loc()`函数获取该年级的数据,并使用`bar()`函数绘制每个分类的条形图。最后,你可以设置图例、标题、轴标签等,并使用`show()`函数显示图形。
希望这可以帮到你!
阅读全文