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

如何在Python中按时间顺序绘制两组不同的时间序列数据

解决方法

1. 先把时间列转成可识别的时间格式

你的代码没达到预期,大概率是因为TIME1和TIME2是字符串格式,matplotlib没法正确识别时间顺序。先把它们转成pandas的datetime类型:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

# 转换时间列为datetime格式
df['TIME1'] = pd.to_datetime(df['TIME1'])
df['TIME2'] = pd.to_datetime(df['TIME2'])

2. 对每组数据按时间排序后再绘制

即使时间转对了,如果原数据的时间不是按顺序排列的,画出来的折线还是会乱。所以绘制前要单独对每组数据按时间排序:

fig, ax = plt.subplots(1,1)

# 提取第一组数据并按时间排序
df1_slice = df[['TIME1', 'DATA1']][1:100].sort_values('TIME1')
ax.plot(df1_slice['TIME1'], df1_slice['DATA1'], label='DATA1')

# 提取第二组数据并按时间排序
df2_slice = df[['TIME2', 'DATA2']][1:100].sort_values('TIME2')
ax.plot(df2_slice['TIME2'], df2_slice['DATA2'], label='DATA2')

# 保持你原来的x轴刻度设置
ax.xaxis.set_major_locator(ticker.MultipleLocator(ticker_spacing1))
# 加个旋转避免x轴标签挤在一起
plt.xticks(rotation=45)
# 加图例区分两组数据
ax.legend()

plt.show()

额外优化:合并数据统一处理(可选)

如果想更清晰地管理两组数据,可以把它们合并成一个带时间索引的数据集,再按时间排序后绘制:

# 整理第一组数据
data1 = pd.DataFrame({
    '时间': df['TIME1'][1:100],
    '数值': df['DATA1'][1:100],
    '组别': 'DATA1'
})

# 整理第二组数据
data2 = pd.DataFrame({
    '时间': df['TIME2'][1:100],
    '数值': df['DATA2'][1:100],
    '组别': 'DATA2'
})

# 合并并按时间排序
combined = pd.concat([data1, data2]).sort_values('时间')

# 绘图
fig, ax = plt.subplots(1,1)
for group, data in combined.groupby('组别'):
    ax.plot(data['时间'], data['数值'], label=group)

ax.xaxis.set_major_locator(ticker.MultipleLocator(ticker_spacing1))
plt.xticks(rotation=45)
ax.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:55:58