strpdate 2num类在Matplotlib 3.1中被弃用,并将在3.3中被删除。请改用time.strptime或dateutil.parser.parse或datestr 2num。然而,我尝试了不同的方法,只是不断得到错误,最常见的错误消息是ValueError:(“未知字符串格式:”,“%Y-%m-% d”)
我已经尝试了time.strptime,dateutil.parser.parse和datestr 2num,但没有一个是正确的,我不知道我错了什么
import matplotlib.pyplot as plt
import numpy as np
import urllib.request
import matplotlib.dates as mdates
def bytespdate2num(fmt, encoding='utf-8'):
strconverter = mdates.datestr2num(fmt)
def bytesconverter(b):
s = b.decode(encoding)
return strconverter(s)
return bytesconverter
def graph_data(stock):
# Unfortunately, Yahoo's API is no longer available
# feel free to adapt the code to another source, or use this drop-in replacement.
stock_price_url = 'https://pythonprogramming.net/yahoo_finance_replacement'
source_code = urllib.request.urlopen(stock_price_url).read().decode()
stock_data = []
split_source = source_code.split('\n')
for line in split_source[1:]:
split_line = line.split(',')
if len(split_line) == 7:
if 'values' not in line and 'labels' not in line:
stock_data.append(line)
date, closep, highp, lowp, openp, adj_closep, volume = np.loadtxt( stock_data,
delimiter=',',
unpack=True,
# %Y = full year. 2015
# %y = partial year 15
# %m = number month
# %d = number day
# %H = hours
# %M = minutes
# %S = seconds
# 12-06-2014
# %m-%d-%Y
converters={0: bytespdate2num('%Y-%m-%d')})
plt.plot_date(date, closep,'-', label='Price')
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Interesting Graph\nCheck it out')
plt.legend()
plt.show()
graph_data('TSLA')
ValueError:(“未知字符串格式:”,“%Y-%m-% d”)
3条答案
按热度按时间8mmmxcuj1#
你的日期格式看起来很常见,所以
strconverter = mdates.datestr2num
应该可以工作(没有fmt参数)。当然,在这种情况下,整个转换器可以简化为然后用它来
mfpqipee2#
我一直坚持这一点,现在终于得到了解决方案,这里有一个例子:
lb3vh1jj3#