首页 文章

使用Candlestick_OHLC绘制图表

提问于
浏览
2
import pandas as pd 
import numpy as np
from matplotlib.finance import candlestick_ohlc
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as mticker
import io
import datetime
import urllib
import urllib.request
%matplotlib notebook


urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/GOOG/chartdata;
              type=quote;range=1y/csv'

with urllib.request.urlopen(urlToVisit) as response:
    sourcePage = response.read().decode('utf-8')


df = pd.read_csv(io.StringIO(sourcePage), skiprows=18, header=None, sep=",", 
                 names=['date','closeP','highP','lowP','openP','volume'],
                 index_col= 0, parse_dates= True)

if 'volume' not in df:
        df['volume'] = np.zeros(len(df))

DATA = df[['openP', 'highP', 'lowP', 'closeP','volume']].values

f1 = plt.subplot2grid((6,4), (1,0), rowspan=6, colspan=4, axisbg='#07000d')
candlestick_ohlc(f1, DATA, width=.6, colorup='#53c156', colordown='#ff1717')

f1.grid('on')
f1.xaxis.set_major_locator(mticker.MaxNLocator(15))
f1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.subplots_adjust(left=.09, bottom=.14, right=.94, top=.95, wspace=.20, hspace=0)
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.show()

所以这里's the problem, when I try to plot the ' candlestick_ohlc ' but it only plots the volume bar chart! (Why is this happening?) I' m认为可能问题与我的日期有关?我正在使用iPython Notebook btw . 我的source is from - Yahoo Finance . 如果你注意到,我跳过了前18行,这样我就可以直接看到实际数据了,它看起来像:

20150302,569.7757,570.5834,557.2202,558.9953,2129600
20150303,572.0694,573.8146,564.9689,568.8881,1704700
20150304,571.8001,575.5299,566.4548,570.3043,1876800
20150305,573.7548,576.3277,571.8400,573.4456,1389600
20150306,566.1307,575.1011,565.2082,573.3060,1659100
20150309,567.2925,568.7086,561.9921,565.3079,1062100

迄今为止,近,高,低,开放,音量

有任何想法吗?非常感谢任何帮助!!

1 回答

  • 2

    所以在@DSM的帮助下,

    DATA = df[['openP', 'highP', 'lowP', 'closeP','volume']]
    DATA = DATA.reset_index()
    DATA["date"]  = DATA["date"].apply(mdates.date2num)
    
    f1 = plt.subplot2grid((6,4), (1,0), rowspan=6, colspan=4, axisbg='#07000d')
    candlestick_ohlc(f1, DATA.values, width=.6, colorup='#53c156', colordown='#ff1717')
    

    解决了这个问题!给他的信用 .

相关问题