【问题标题】:adding a vertical line to a time series plot in python在python中的时间序列图中添加一条垂直线
【发布时间】:2022-12-13 00:44:16
【问题描述】:

我正在绘制时间序列数据,这些数据将被分成训练和测试数据集。现在,我想在图中画一条垂直线,表示训练/测试数据拆分发生的位置。

split_point indicates where the data should be plotted. 

df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv', parse_dates=['date'], index_col='date')

df
data_size=len(df)

split_point = data_size - data_size // 3
split_point

# Draw Plot
def plot_df(df, x, y, title="", xlabel='Date', ylabel='Value', dpi=100):
    plt.figure(figsize=(16,5), dpi=dpi)
    plt.plot(x, y, color='tab:red')
    plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)
    plt.show()

plot_df(df, x=df.index, y=df.value, title='Monthly anti-diabetic drug sales in Australia from 1992 to 2008.') 

如何将其添加到情节中?我尝试使用plt.axvline,但不知道如何从分割点转到日期。有任何想法吗?

plt.axvline(split_point)

【问题讨论】:

    标签: python matplotlib time-series


    【解决方案1】:

    你几乎就在那里简单地提取分裂点中的元素,就像这样。

    split =(df.iloc[[split_point]] )
    

    给予#

                   value
    date                
    2002-11-01  13.28764
    

    所以日期是索引。提取索引如下。

    split =(df.index[split_point] )
    

    给#

    2002-11-01 00:00:00
    

    情节使用plt.axvline()

    完整代码

    import pandas as pd
    import matplotlib.pyplot as plt
    import datetime as dt
    
    df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv', parse_dates=['date'], index_col='date')
    
    df
    data_size=len(df)
    
    split_point = data_size - data_size // 3
    print(split_point)
    split =(df.index[split_point] )
    print(split)
    
    # Draw Plot
    def plot_df(df, x, y, title="", xlabel='Date', ylabel='Value', dpi=100):
        plt.figure(figsize=(16,5), dpi=dpi)
        plt.plot(x, y, color='tab:red')
        plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)
        
    
        plt.axvline((split))
        plt.show()
    
    plot_df(df, x=df.index, y=df.value, title='Monthly anti-diabetic drug sales in Australia from 1992 to 2008.') 
    

    给#

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      相关资源
      最近更新 更多