【问题标题】:Reducing the time frequency of x-axis for time series data降低时间序列数据 x 轴的时间频率
【发布时间】:2021-01-26 16:00:14
【问题描述】:

我正在绘制特定公司 10 年数据的股票价格。但是x轴充满了很多不可读的数据。我尝试了许多解决方案来降低 x 轴频率。 我不想加载 x 轴,而是很乐意只显示半年一次的刻度。 下面是我的代码。请帮助我获得所需的情节。

plt.figure(figsize=(25,5))
plt.plot(amd_df['date'][:train_seq],amd_df['close'][:train_seq],color='b',label = 'Train Data')
plt.plot(amd_df['date'][train_seq:],amd_df['close'][train_seq:],color='r',label = 'Test Data')
plt.title('AMD Stock Price')
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.xticks( rotation=25 )
plt.legend()
plt.show()

我们在这个图中有大约 2683 个数据点。 请看下文。 谢谢

【问题讨论】:

标签: python matplotlib time-series


【解决方案1】:

没有提供任何数据,因此我们通过创建带有随机数的样本数据来回应。重点是设置MOnthLocator(interval=6),设置为Dateformatter()。见官方reference

import pandas as pd
import numpy as np

date_rng = pd.date_range('2010-01-01','2020-01-01', freq='B')
val = np.random.randint(0,100,(2609))
amd_df = pd.DataFrame({'date':date_rng,'close':val})
amd_df['date'] = pd.to_datetime(amd_df['date'])
train_seq = 2500
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

fig = plt.figure(figsize=(25,5))
ax = fig.add_subplot(111)

ax.plot(amd_df['date'][:train_seq],amd_df['close'][:train_seq],color='b',label = 'Train Data')
ax.plot(amd_df['date'][train_seq:],amd_df['close'][train_seq:],color='r',label = 'Test Data')
ax.set_title('AMD Stock Price')
ax.set_xlabel('Date')
ax.set_ylabel('Stock Price')

months = mdates.MonthLocator(interval=6)
months_fmt = mdates.DateFormatter('%y-%m')
ax.xaxis.set_major_locator(months)
ax.xaxis.set_major_formatter(months_fmt)

ax.legend()
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多