我有两个不同日期的时间序列数据集。其中一个有5月2日一整天的数据。另一个有6月3日一整天的数据。每个人的时间都不一样。例如:在5月2日,我有时间00h00m02s的数据,而在6月3日,我有时间00h00m04s的数据我如何将它们绘制在同一个图上,以便我可以看到它们在这24小时内的关系,而不管是哪一天?我如何保持一个x轴和一个y轴只有两个?
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()
1条答案
按热度按时间nr7wwzry1#
一个简单的方法是从每个数据集中只取时间(删除日期)并将它们绘制在一起。这样,它们将在同一x轴上排列,从而允许您将它们绘制在彼此之上并轻松比较它们。请注意,我假设您只有一天的数据,而不是多天的数据。下面给出了一个简单的例子来说明这一点。