matplotlib 如何在一个图中绘制不同的时间序列?

m2xkgtsf  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(113)

我有两个不同日期的时间序列数据集。
其中一个有5月2日一整天的数据。
另一个有6月3日一整天的数据。
每个人的时间都不一样。例如:在5月2日,我有时间00h00m02s的数据,而在6月3日,我有时间00h00m04s的数据
我如何将它们绘制在同一个图上,以便我可以看到它们在这24小时内的关系,而不管是哪一天?
我如何保持一个x轴和一个y轴只有两个?

nr7wwzry

nr7wwzry1#

一个简单的方法是从每个数据集中只取时间(删除日期)并将它们绘制在一起。这样,它们将在同一x轴上排列,从而允许您将它们绘制在彼此之上并轻松比较它们。请注意,我假设您只有一天的数据,而不是多天的数据。下面给出了一个简单的例子来说明这一点。

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

# creating fake data
x = ['2023-05-02 01:11:01', 
     '2023-05-02 04:12:22', 
     '2023-05-02 06:41:12', 
     '2023-05-02 10:43:42', 
     '2023-05-02 14:22:11', 
     '2023-05-02 20:21:15']
x = [pd.Timestamp.fromisoformat(date) for date in x]
y = [36, 25, 29, 31, 34, 27]
df1 = pd.DataFrame(data = {'Datetime': x, 'Value': y})

x = ['2023-06-03 03:12:12', 
     '2023-06-03 06:15:05', 
     '2023-06-03 09:40:13', 
     '2023-06-03 11:20:43', 
     '2023-06-03 13:44:55', 
     '2023-06-03 18:36:11', 
     '2023-06-03 23:51:33']
x = [pd.Timestamp.fromisoformat(date) for date in x]
y = [32, 54, 21, 37, 54, 44, 17]
df2 = pd.DataFrame(data = {'Datetime': x, 'Value': y})

# make the required change
without_date = df1['Datetime'].apply( lambda d : d.time() )
df1['Datetime'] = without_date
df1['Datetime'] = pd.to_datetime(df1['Datetime'], format="%H:%M:%S")

without_date = df2['Datetime'].apply( lambda d : d.time() )
df2['Datetime'] = without_date
df2['Datetime'] = pd.to_datetime(df2['Datetime'], format="%H:%M:%S")

# Plotting the data
fig, ax = plt.subplots()
ax.plot(df1.Datetime, df1.Value, label="May 2nd", c="tab:blue", marker='o')
ax.plot(df2.Datetime, df2.Value, label="June 3rd", c="tab:orange", marker='d')
ax.xaxis.set_major_formatter(mpl.dates.DateFormatter("%H:%M:%S"))
plt.xticks(rotation = 45)
plt.legend()
plt.show()

相关问题