问题描述
我最近不得不从 Yahoo Finance 网站实际下载一个 CSV 文件(NG.L 股票),因为我无法再直接从 Yahoo 提取数据,而我的原始财务 Python 脚本没有问题。
>我的程序几乎可以运行并显示我的 NG.L 股票图表,但图表底部的日期完全错误。他们应该只显示我的 NG.L CSV 文件中从 02/06/2021 到 09/07/2021 的日期。
相反,我的图表显示日期是 23/01/2021 到 19/11/2021,这很奇怪。是否有快速代码修复,因为我只想显示日期并从我的 CSV 文件中提取日期。
NG.L Python 代码:
import matplotlib.pyplot as plt
from mplfinance.original_flavor import candlestick_ohlc
import pandas as pd
import matplotlib.dates as mpl_dates
import datetime as dt
plt.style.use('ggplot')
# Extracting Data for plotting
data = pd.read_csv('NG.L.csv')
ohlc = data.loc[:,['Date','Open','High','Low','Close',]]
ohlc['Date'] = pd.to_datetime(ohlc['Date'])
ohlc['Date'] = ohlc['Date'].apply(mpl_dates.date2num)
ohlc = ohlc.astype(float)
# Creating subplots
fig,ax = plt.subplots()
candlestick_ohlc(ax,ohlc.values,width=0.8,colorup='green',colordown='red',alpha=0.8)
# Setting labels & titles
ax.set_xlabel('TIMELINE of NG.L')
ax.set_ylabel('PRICE IN GBP POUND STERLING')
fig.suptitle('NATIONAL GRID PLC - 2 JUNE 2021 - 9 JULY 2021')
# Formatting Date
date_format = mpl_dates.DateFormatter('%d-%m-%Y')
ax.xaxis.set_major_formatter(date_format)
fig.autofmt_xdate()
fig.tight_layout()
plt.show()
NG.L 股票图表:
NG.L CSV 文件
解决方法
我下载了csv文件,将上面的代码复制到我机器上的.py文件中,然后简单的运行了一下,得到了下面的结果。对我来说看起来不错。你安装了什么版本的mplfinance?
还要注意,如果您直接查看 csv 文件,日期格式是什么??
dino@DINO:~/code/mplfinance/examples/scratch_pad$ head NG.L.csv
Date,Open,High,Low,Close,Adj Close,Volume
2021-06-01,938.799988,957.755981,950.099976,918.291504,5162873
2021-06-02,950.500000,965.599976,948.500000,960.599976,928.439941,9110791
2021-06-03,937.099976,909.099976,921.299988,9609182
2021-06-04,921.700012,927.799988,912.700012,914.299988,7607690
2021-06-07,918.900024,919.229980,913.000000,916.000000,5240943
2021-06-08,919.099976,926.200012,914.239990,914.700012,12657157
2021-06-09,913.599976,916.299988,909.799988,6334877
2021-06-10,918.099976,925.000000,911.900024,914.000000,7530470
2021-06-11,915.799988,921.809998,914.400024,918.599976,8630006
您可能需要考虑使用新 mpfinance API。你可以用更少的代码完成同样的事情:
import mplfinance as mpf
import pandas as pd
# Extracting Data for plotting
data = pd.read_csv('NG.L.csv',index_col=0,parse_dates=True)
mpf.plot(data,type='candle',style='yahoo',ylabel='PRICE IN GBP POUND STERLING',title='NATIONAL GRID PLC - 2 JUNE 2021 - 9 JULY 2021',datetime_format='%d-%m-%Y')
完全披露:我是 mplfinance 库的维护者。目前,旧 API 仍可通过 from mplfinance.original_flavor
导入使用,对于那些习惯了它的人,但我仍然鼓励人们使用旨在更简单的新 API。