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

如何在matplotlib中以pandas DataFrame日期列为X轴绘制指标数据

解决方法

你需要先将Date列转换为pandas的日期格式,之后绘图时指定X轴为该列即可,以下是修改后可直接运行的代码:

import matplotlib.pyplot as plt
import pandas as pd

# 方法1:读取文件时直接解析Date列为日期格式,一步到位
data = pd.read_csv("Ari_atlag.txt", sep = '\t', header = 0, parse_dates=['Date'])

# 方法2:如果不想在读文件时处理,也可以读取后手动转换,取消注释下行即可使用
# data['Date'] = pd.to_datetime(data['Date'])

print(data.head())

# 方案1:分别绘制两个独立的趋势图
# 第一个图:Date与Number_of_test的趋势
plt.figure(figsize=(10,4))
plt.plot(data['Date'], data['Number_of_test'], color='steelblue')
plt.title('Number of test trend')
plt.xlabel('Date')
plt.ylabel('Number of test')
plt.xticks(rotation=45) # 倾斜日期标签避免重叠
plt.tight_layout() # 自动调整布局避免内容被截断
plt.show()

# 第二个图:Date与Avarage_of_ARI的趋势
plt.figure(figsize=(10,4))
plt.plot(data['Date'], data['Avarage_of_ARI'], color='darkorange')
plt.title('Avarage of ARI trend')
plt.xlabel('Date')
plt.ylabel('Avarage of ARI')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

# 方案2:如果希望将两个趋势图画在同一画布的不同子图中,可直接调用pandas的plot方法,代码更简洁
data.plot(x='Date', y=['Number_of_test', 'Avarage_of_ARI'], subplots=True, figsize=(10,8), rot=45)
plt.tight_layout()
plt.show()

关键逻辑说明

  • parse_dates=['Date']参数可以在读取csv时直接将指定列解析为datetime日期格式,和读取后调用pd.to_datetime(data['Date'])手动转换的效果完全一致
  • 绘图时无论使用matplotlib原生方法还是pandas封装的plot方法,只要指定x参数为Date列,就不会默认使用数据集索引作为X轴
  • 日期倾斜参数可根据实际展示效果调整,避免长日期标签重叠影响可读性

内容的提问来源于stack exchange,提问作者Dávid Kókai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:10