
小伙伴
小于 1 分钟
"""
title: excel数据绘制条形图
author: Mr.Tzr
date: 2024-9-20
"""
# 导入所需模块
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 设置字体为黑体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 处理负号显示问题
plt.rcParams['axes.unicode_minus'] = False
try: # 捕获异常
# 读取 CSV 文件
df = pd.read_csv('file/file3.csv', encoding='gbk')
# 判断需要绘制的列是否在数据集中
required_columns = ['姓名', '数学', '语文', '英语', '理综']
if all(col in df.columns for col in required_columns): # 判断是否包含所有列
# 转换数据为长格式,便于绘制
df_melted = df.melt(id_vars='姓名', #x轴变量
value_vars=['数学', '语文', '英语', '理综'], #y轴变量
var_name='科目', value_name='分数' # 变量名
)
# 绘制条形图
sns.barplot(x='姓名', y='分数', hue='科目', data=df_melted) # 绘制条形图 hue 用于区分不同科目
plt.savefig('file/file4.png', dpi=300) # 保存图片
plt.show() # 显示图形
else: # 列缺失
print("数据集中缺少必要的列,请检查文件内容。") # 输出提示信息
except FileNotFoundError: # 文件不存在
print("文件未找到,请检查文件路径。") # 输出提示信息
except Exception as e: # 其他异常
print(f"发生错误: {e}") # 输出提示信息
<!-- #include-env-start: /home/runner/work/vuepress-theme-hope/vuepress-theme-hope/docs/md-enhance/src/echarts -->
::: echarts A nightingale chart
```json
{
"legend": {
"top": "bottom"
},
"toolbox": {
"show": true,
"feature": {
"mark": {
"show": true
},
"dataView": {
"show": true,
"readOnly": false
},
"restore": {
"show": true
},
"saveAsImage": {
"show": true
}
}
},
"series": [
{
"name": "Nightingale Chart",
"type": "pie",
"radius": [20, 100],
"center": ["50%", "50%"],
"roseType": "area",
"itemStyle": {
"borderRadius": 8
},
"data": [
{
"value": 40,
"name": "rose 1"
},
{
"value": 38,
"name": "rose 2"
},
{
"value": 32,
"name": "rose 3"
},
{
"value": 30,
"name": "rose 4"
},
{
"value": 28,
"name": "rose 5"
},
{
"value": 26,
"name": "rose 6"
},
{
"value": 22,
"name": "rose 7"
},
{
"value": 18,
"name": "rose 8"
}
]
}
]
}
```
:::
<!-- #include-env-end -->