Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mpl_finance无法将-100000转换为日期_Python_Matplotlib_Candlestick Chart - Fatal编程技术网

Python mpl_finance无法将-100000转换为日期

Python mpl_finance无法将-100000转换为日期,python,matplotlib,candlestick-chart,Python,Matplotlib,Candlestick Chart,我正在尝试用mpl_finance制作一个简单的烛台ohlc图表。在他们的网站上,它说烛台法的引号中的第一个元素是日期。它说它们必须采用浮动日期格式。然而,当我使用date2num时,它会给我一个错误,即“无法将-100000转换为日期。如果将非datetime值传递给需要datetime对象的轴,则通常会发生这种情况。”当我使用没有date2num方法的原始列表时,它会给我一个错误,该错误指向一行代码-xy=(t-offset,lower)和 消息-“不支持的操作数类型-:'datetime.

我正在尝试用mpl_finance制作一个简单的烛台ohlc图表。在他们的网站上,它说烛台法的引号中的第一个元素是日期。它说它们必须采用浮动日期格式。然而,当我使用date2num时,它会给我一个错误,即“无法将-100000转换为日期。如果将非datetime值传递给需要datetime对象的轴,则通常会发生这种情况。”当我使用没有date2num方法的原始列表时,它会给我一个错误,该错误指向一行代码-xy=(t-offset,lower)和 消息-“不支持的操作数类型-:'datetime.date'和'float'。它似乎想让我使用float而不是datetime.date,但这与前面的错误相矛盾。这是我的代码。任何帮助都将不胜感激。提前感谢

import requests
import json
import pprint
import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
import matplotlib.dates as mdates
from datetime import datetime, date, time

url = "https://www.alphavantage.co/query"

function = "TIME_SERIES_DAILY"
symbol = "MSFT"
api_key = "K2H0JNUZBWYKW02L"

data = { "function": function, 
     "symbol": symbol, 
     "apikey": api_key } 
page = requests.get(url, params = data)
thedata = page.json()
days = []
dailyopen = []
dailyclose = []
dailyhigh = []
dailylow = []
dailyvol = []
delimitedyear = []
delimitedday = []
delimitedmonth = []

thedatakeys = list(thedata['Time Series (Daily)'].keys())
thedatakeys.sort()

for day in thedatakeys:
    days.append(day)
    dailyopen.append(float(thedata['Time Series (Daily)'][day] 
   ['1. open']))
    dailyhigh.append(float(thedata['Time Series (Daily)'][day] 
   ['2. high']))
    dailylow.append(float(thedata['Time Series (Daily)'][day] 
   ['3. low']))
    dailyclose.append(float(thedata['Time Series (Daily)'] 
   [day]['4. close']))
    dailyvol.append(float(thedata['Time Series (Daily)'][day] 
   ['5. volume']))

counter = 0
for day in days:
    delimitedyear.append(days[counter][0:4])
    delimitedmonth.append(days[counter][5:7])
    delimitedday.append(days[counter][8:10])
    counter = counter + 1
d = []

for newcounter in range(len(delimitedyear)):
    d.append(date(int(delimitedyear[newcounter]), 
int(delimitedmonth[newcounter]), 
int(delimitedday[newcounter])))

formatteddates = mdates.date2num(d)
ohlc = [formatteddates, dailyopen, dailyhigh, dailylow, 
dailyclose]
print(formatteddates)

fl, ax = plt.subplots(figsize = (10,5))
candlestick_ohlc(ax, ohlc, width=.6, colorup='green', 
colordown='red')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))

ax.grid(False)

plt.show()

烛台的输入格式需要是
(datetime,open,high,…)
元组列表或相应的numpy数组。
这里提供的是
[[datetime1,datetime2,…],[open1,open2,…],…]的列表

要转换为所需格式,您可以使用

ohlc = list(zip(formatteddates, dailyopen, dailyhigh, dailylow, dailyclose))