如何在matplotlib中将X轴值设置为日期?

s3fp2yjn  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(150)

我正在生成一个图从ML模型是预测股票价格从雅虎金融。
该图由actual_prices + predicted_prices组成。
我想将x轴值更改为测试数据时间范围,但当我尝试设置xlim时,这会完全删除图。
我需要这些相同的图,但将0-500 x轴值更改为test_starttest_end日期时间值,如第二张图片:

当我包括plt.gca().set_xlim(test_start, test_end) '时,图消失:

相关代码:

  • 加载测试数据
test_start = dt.datetime(2020, 9, 19)
test_end = dt.datetime.now()

test_data = web.DataReader(company, 'yahoo', test_start, test_end)
actual_prices = test_data['Close'].values
  • 绘图
plt.plot(actual_prices, color='black', label=f"Actual {company} Price")
plt.plot(predicted_prices, color='green', label=f"Predicted {company} Price")
plt.title(f'Predicted {company} Share Price for tomorrow: {prediction}')
    #plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=500))
#plt.gca().set_xlim(time_start, time_end)
plt.xlabel(f'Data shown from {time_start} until {time_end}')
plt.ylabel(f'{company} Share Price')
plt.legend()
        
plt.show()

我想这可能是因为日期time_starttime_end不存在于predicted_pricesnp.array中,因此无法绘制?如果是这样,我如何绘制日期与actual_prices之间的关系,同时还包括predicted_prices线?

bzzcjhmw

bzzcjhmw1#

您需要提交指数本身,即日期,然后是价格数据。下面我给予了一个例子,有两条线,数据有不同的长度,我把数据通过切片,并把它放在绘图。如果没有预测价格的日期数据,那么您需要创建一个,并把它放在ax.plot。

import pandas_datareader.data as web
import matplotlib.pyplot as plt

test_data = web.DataReader('F', 'yahoo', start='2018-08-31', end='2018-10-31')
print(test_data)

fig, ax = plt.subplots()
ax.plot(test_data.index[15:], test_data['Close'][15:])
ax.plot(test_data.index[:20], test_data['Close'][:20])
fig.autofmt_xdate()

plt.show()

更新

test_data = web.DataReader('F', 'yahoo', start='2018-08-31', end='2018-10-31')

fig, ax = plt.subplots()
ax.plot(test_data.index, test_data['Close'])
ax.plot(test_data.index[15:35], test_data['Close'][:20])
fig.autofmt_xdate()

plt.show()

相关问题