import pandas as pd
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
from matplotlib.finance import candlestick_ohlc
import matplotlib.dates as mdates
import datetime as dt
import urllib
import json
from urllib.request import urlopen
import datetime as dt
import requests
dataLink ='http://api.huobi.com/staticmarket/btc_kline_015_json.js'
r = requests.get(dataLink) # r is a response object.
quotes = pd.DataFrame.from_records(r.json()) # fetches dataset
quotes[0] = pd.to_datetime(quotes[0].str[:-3], format='%Y%m%d%H%M%S')
#Naming columns
quotes.columns = ["Date","Open","High",'Low',"Close", "Vol"]
#Converting dates column to float values
quotes['Date'] = quotes['Date'].map(mdates.date2num)
#Making plot
fig = plt.figure()
fig.autofmt_xdate()
ax1 = plt.subplot2grid((6,1), (0,0), rowspan=6, colspan=1)
#Converts raw mdate numbers to dates
ax1.xaxis_date()
plt.xlabel("Date")
print(quotes)
#Making candlestick plot
candlestick_ohlc, (ax1,quotes.values,width=1,colorup='g',colordown='k',
alpha=0.75)
plt.show()
我正在尝试绘制由Huobi提供的json数据的烛台图表,但我无法对日期和日期进行排序。情节看起来很糟糕。你能用一个相当简单的术语来解释新手可能会理解我做错了吗?这是我的代码......
Thx,提前`
答案 0 :(得分:0)
您可以在调用烛台功能后将fig.autofmt_xdate()
置于某个位置;这将使日期看起来更好。
关于情节本身,您可以决定使条形稍微小一点width=0.01
,这样它们就不会重叠。
然后,您可以决定放大一点,以交互方式或编程方式实际查看图表中发生的情况,
ax1.set_xlim(dt.datetime(2017,04,17,8),dt.datetime(2017,04,18,0))
答案 1 :(得分:0)
这归结为一个问题,即根据周期和时间确定的数据的粒度来制作烛台有多宽。 json feed的长度参数。你只需要使用candlestick_ohlc()中的width参数,直到图表看起来正确...