使用 Candlestick_OHLC 绘制图表

Charting with Candlestick_OHLC

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()

问题来了,当我尝试绘制 'candlestick_ohlc' 但它只绘制了成交量条形图! (为什么会这样?)我在想问题可能与我的约会有关吗?顺便说一下,我正在使用 iPython 笔记本。我的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

日期、收盘价、最高价、最低价、开盘价、交易量

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

所以在@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')

问题已解决!归功于他。