旧版本 python 和 matplotlib 的教程包含如下代码:
def graphRawFX ():
date,bid,ask = np.loadtxt('GBPUSD1d.txt',
unpack=True,
delimiter=',',
converters={0:mdates.strpdate2num('%Y%m%d%H%M%S')})
fig = plt.figure(figsize=(10,7))
ax1 = plt.subplot2grid((40,40),(0,0), rowspan=40,colspan=40)
ax1.plot(date,bid)
ax1.plot(date,ask)
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
plt.grid(True)
plt.show()
graphRawFX()
Run Code Online (Sandbox Code Playgroud)
当我运行代码时出现以下错误:
strpdate2num 类在 Matplotlib 3.1 中已弃用,并将在 3.3 中删除。请改用 time.strptime 或 dateutil.parser.parse 或 datestr2num 。
converters={0:mdates.strpdate2num('%Y%m%d%H%M%S')})
以下是一行数据以获取更多信息:
20130501000000,1.55358,1.55371
Run Code Online (Sandbox Code Playgroud)
那么如何使用 matplotlib 3.1 将该字符串转换为日期?
我认为警告要求您做的是使用 time.strptime 函数从字符串转换为时间。您可能想要更改第一行。
import time
date,bid,ask =np.loadtxt('GBPUSD1d.txt',unpack=True,delimiter=',',converters={0:time.strptime(mdates,'%Y%m%d%H%M%S')})
Run Code Online (Sandbox Code Playgroud)
这是我根据错误/警告和给出的情况所能看到的。
经过交谈,我意识到 mdates 实际上是一个 matplotlib 模块。因此建议进行更改。请尝试一下。
date,bid,ask = np.loadtxt('GBPUSD1d.txt', unpack=True, delimiter=',', converters={0: lambda x: mdates.datestr2num(x.decode('utf8'))})
Run Code Online (Sandbox Code Playgroud)
希望这会起作用。