使用hist函数绘制CSV数据直方图的轴与日期显示问题
解决垂直柱状图轴方向与日期显示问题
你的代码误用了图表类型:hist() 是用来统计数值列的频率分布的,不是展示不同日期对应事件数的分类柱状图,这就是为什么X轴显示0-2区间、看不到日期,且图表逻辑不符合需求的原因。
以下是两种修正方案,都能实现X轴为日期、Y轴为事件数的垂直柱状图:
方案一:使用Pandas内置的柱状图方法
import pandas as pd import matplotlib.pyplot as plt # 读取CSV,同时将Date列转为日期类型(方便后续时间维度扩展) Results_Hist = pd.read_csv( "/content/drive/MyDrive/Colab Notebooks/Results.csv", parse_dates=['Date'] ) # 设置图表尺寸,避免拥挤 plt.figure(figsize=(10, 6)) # 绘制垂直柱状图,指定X/Y轴列,旋转日期标签防止重叠 ax = Results_Hist.plot.bar(x='Date', y='Incidents', rot=45, color='steelblue') # 配置轴标签与标题 ax.set_xlabel('日期') ax.set_ylabel('事件数') ax.set_title('每日事件数统计') # 自动调整布局,避免标签被截断 plt.tight_layout() plt.show()
方案二:使用Matplotlib原生方法
如果你更习惯直接用Matplotlib控制细节,可以用这个版本:
import pandas as pd import matplotlib.pyplot as plt Results_Hist = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/Results.csv") plt.figure(figsize=(10, 6)) # 直接绘制柱状图,传入日期和事件数数据 plt.bar(Results_Hist['Date'], Results_Hist['Incidents'], color='steelblue') # 配置图表元素 plt.xlabel('日期') plt.ylabel('事件数') plt.title('每日事件数统计') # 旋转X轴标签,提升可读性 plt.xticks(rotation=45) plt.tight_layout() plt.show()
核心修改说明:
- 替换
hist()为柱状图方法:plot.bar()(Pandas)或plt.bar()(Matplotlib),这两种方法都是用来展示分类数据对应数值的,完全匹配你的需求 parse_dates=['Date']:可选但推荐,将字符串日期转为日期类型,后续如果要分析时间序列数据会更方便rot=45/plt.xticks(rotation=45):旋转日期标签,避免文字重叠tight_layout():自动调整图表边距,防止轴标签被截断
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

