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

如何在Pandas DataFrame中绘制时间(datetime64)与功率的时序图?

Pandas时序图绘制优化方案

问题分析

现有代码将datetime64类型的time列转为字符串格式的Time列,matplotlib会把字符串视为离散类别,导致X轴刻度拥挤重叠,且无法正确识别时序逻辑,最终绘图效果不佳。

解决步骤

1. 保留原始datetime类型数据

不要将time列转为字符串,直接使用原始的datetime64类型进行绘图,这样matplotlib才能正确解析时序关系。

2. 使用matplotlib日期模块处理X轴

利用matplotlib.dates模块设置X轴的刻度间隔、格式,确保按UTC小时(10:00 UTC至00:00 UTC)显示刻度。

3. 优化绘图细节

调整刻度旋转角度、网格显示,避免刻度重叠。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 确保time列是datetime64类型(若未转换,执行此行)
# df['time'] = pd.to_datetime(df['time'], utc=True)

# 绘图
fig, ax = plt.subplots(figsize=(9,4))
ax.plot(df['time'], df['power(dB)'], color='r', linewidth=1.5, linestyle=':')

# 设置Y轴范围
ax.set_ylim(0, 70)

# 配置X轴:每小时一个刻度,显示格式为HH:00 UTC
ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M UTC'))

# 设置轴标签与标题
ax.set_xlabel('Time (UTC)', fontsize=13)
ax.set_ylabel('P (dB)', fontsize=13)
plt.title('X-Band Power | 2021-12-11', fontsize=14)

# 调整刻度角度,避免重叠
plt.xticks(rotation=60)
plt.grid()

# 自动调整布局,防止标签截断
plt.tight_layout()
plt.show()

关键说明

  • mdates.HourLocator(interval=1):强制X轴每小时生成一个刻度
  • mdates.DateFormatter('%H:%M UTC'):定义刻度显示格式,明确标注UTC时区
  • 保留原始datetime64类型,确保matplotlib正确识别时序顺序,避免刻度逻辑混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:35:21