时间序列数据可视化问题

Time series data visualization issue

我有一个时间序列数据,如下所示,其中数据由年和周组成。所以,数据是从2014年第1周到2015年第52周。

现在,下面是上述数据的线图

如您所见,x 轴标记并不是我想要实现的,因为 201453 之后的点应该是 201501,并且不应该有任何直线,也不应该达到201499. 如何根据 Due_date 列重新缩放 x 轴?下面是代码

rand_products = np.random.choice(Op_2['Sp_number'].unique(), 3)
selected_products = Op_2[Op_2['Sp_number'].isin(rand_products)][['Due_date', 'Sp_number', 'Billing']]

plt.figure(figsize=(20,10))
plt.grid(True)

g = sns.lineplot(data=selected_products, x='Due_date', y='Billing', hue='Sp_number', ci=False, legend='full', palette='Set1');

问题是因为 201401... 等被读作数字,这就是折线图有差距的原因。要修复它,您需要将数字更改为日期格式并绘制它。 由于完整数据不可用,下面是两列数据框,其中 Due_date 的形式为整数 YYYYWW。帐单列是一堆随机数。使用此处的方法将整数转换为日期格式并绘图。差距将被消除....

import numpy as np
import pandas as pd
import random
import matplotlib.pyplot as plt
import seaborn as sns

Due_date = list(np.arange(201401,201454)) #Year 2014
Due_date.extend(np.arange(201501,201553)) #Year 2915
Billing = random.sample(range(500, 1000), 105) #billing numbers
df = pd.DataFrame({'Due_date': Due_date, 'Billing': Billing})
df.Due_date = df.Due_date.astype(str)
df.Due_date = pd.to_datetime(df['Due_date']+ '-1',format="%Y%W-%w") #Convert to date

plt.figure(figsize=(20,10))
plt.grid(True)

ax = sns.lineplot(data=df, x='Due_date', y='Billing', ci=False, legend='full', palette='Set1')

输出图