You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas与Matplotlib绘图无报错但图表无数据显示求助

问题排查与修正方案

核心问题分析

  • plt.bar参数传递错误:plt.bar()要求分别传入x轴数据和对应高度数据,你直接把整个DataFrame传进去,Matplotlib无法正确解析,导致无数据显示。
  • 高度参数固定值无效:height=1是固定值,就算能显示,也看不到实际病假时长的差异,完全失去了图表的意义。
  • 标题与内容不符:标题写的是“不同人员的年龄”,但实际要展示的是病假时长,逻辑混乱。
  • 图例调用无意义:plt.legend()没有指定任何标签,单组柱状图不需要额外图例,调用后只会显示空图例。
  • 未验证数据加载状态:你没有确认CSV文件是否正确读取,比如列名是否匹配、是否有有效数据,可能数据本身就没加载进来。

修正后的代码

import matplotlib.pyplot as plt
import pandas as pd

# 读取数据并先验证结构
sickpay = pd.read_csv('sickleavedata.csv', index_col=0)
print(sickpay.head())  # 打印前几行确认数据是否正确加载

# 提取x轴和高度数据
job_titles = sickpay.index  # 索引为JobTitle,作为x轴
sick_hours = sickpay['SickLeaveHours']  # 替换为你CSV中实际的病假时长列名

# 绘制柱状图
plt.bar(job_titles, sick_hours)
plt.xlabel('JobTitle')
plt.ylabel('SickLeaveHours')
plt.title('Sick Leave Hours by Job Title')
plt.xticks(rotation=45)  # 旋转x轴标签,避免长职位名重叠
plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

额外注意事项

  • 确认CSV文件中的列名是否为SickLeaveHours,如果不是,要替换成实际列名。
  • 如果x轴标签太多导致重叠,plt.xticks(rotation=45)可以解决这个问题。
  • 运行代码前先看print(sickpay.head())的输出,确保数据正确加载,没有出现空值或列名错误。

内容的提问来源于stack exchange,提问作者Luke Shute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:20:53