📜  如何在单个图中添加两个分段时间序列 - Python (1)

📅  最后修改于: 2023-12-03 15:24:37.418000             🧑  作者: Mango

如何在单个图中添加两个分段时间序列 - Python

在数据分析领域中,绘制分段时间序列图是很常见的需求。本文将介绍如何用Python添加两个分段时间序列到单个图中。

数据准备

假设我们有如下的数据:

Date        TimeSeries1  TimeSeries2
2021-01-01  0.2          0.5
2021-01-02  0.5          0.3
2021-01-03  0.3          0.8
2021-01-04  0.4          0.2
2021-01-05  0.6          0.4
2021-01-06  0.8          0.6
2021-01-07  0.7          0.9
2021-01-08  0.9          0.7
2021-01-09  0.6          0.3

其中,Date是日期,TimeSeries1和TimeSeries2是两个不同的时间序列。

添加分段时间序列到单个图

首先,我们需要导入必要的Python库,包括pandas、matplotlib和datetime。

import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime

然后,读取数据并将Date列转换为datetime类型。

data = pd.read_csv("data.csv")
data["Date"] = pd.to_datetime(data["Date"])

接着,将时间序列按Date列排序。

data = data.sort_values("Date")

为了绘制分段时间序列图,我们需要将数据集分成两段:第一段是从2021-01-01到2021-01-05,第二段是从2021-01-06到2021-01-09。我们可以使用如下的代码来实现。其中,start_date和end_date是分段的起始日期和终止日期。

start_date1 = datetime(2021, 1, 1)
end_date1 = datetime(2021, 1, 5)
start_date2 = datetime(2021, 1, 6)
end_date2 = datetime(2021, 1, 9)

data1 = data[(data["Date"] >= start_date1) & (data["Date"] <= end_date1)]
data2 = data[(data["Date"] >= start_date2) & (data["Date"] <= end_date2)]

现在,我们可以使用如下的代码绘制分段时间序列图。其中,dashed_line是分段的垂直虚线。我们先绘制第一段时间序列(TimeSeries1),再绘制第二段时间序列(TimeSeries2)。

fig, ax = plt.subplots(figsize=(10, 5))

dashed_line = ax.axvline(x=start_date2, color='gray', linestyle='--')

ax.plot(data1["Date"], data1["TimeSeries1"], label="TimeSeries1")
ax.plot(data2["Date"], data2["TimeSeries2"], label="TimeSeries2")

plt.legend()
plt.show()

如此,就能够得到如下的分段时间序列图。

分段时间序列图

以上,便是如何用Python添加两个分段时间序列到单个图中的介绍。