使用python绘制股票k线图,该例子从本地加载的数据
<pre>
import numpy as np
import matplotlib.pyplot as plt
引入finance模块自带的财经数据
from matplotlib.finance import quotes_historical_yahoo_ohlc
from matplotlib.dates import YearLocator,MonthLocator,DateFormatter
引入时间
import time
引入finace中的k线绘制图方法
from matplotlib.finance import candlestick_ohlc
从本地读取数据
import pandas as pd
设置图形样式
plt.style.use('ggplot')
读取数据
df = pd.read_excel('testdata.xlsx')
取得时间数据和成交量
dates=df["dates"][1:].values.tolist()
volumns = df["counts"][1:].values.tolist()
取得开盘,结束,最低,最高的股票数据
open=df["open"][1:].values.tolist()
close=df["close"][1:].values.tolist()
low=df["low"][1:].values.tolist()
high=df["high"][1:].values.tolist()
将时间数据转换为数字,此处需要引入time模块
timestamp = [time.mktime(date.timetuple()) for date in dates]
组合形成quotes,在绘制k线图的时候需要
quotes = zip(timestamp,open,high,low,close)
定义坐标系位置(左下角坐标和长宽)
left,width = 0.1,0.8
rect_vol = [left,0.1,width,0.26]
rect_main = [left,0.4,width,0.5]
创建fig图形框
fig = plt.figure()
添加坐标系
ax_vol = fig.add_axes(rect_vol)
绘制成交量填充图
ax_vol.fill_between(dates,volumns,color='y')
如果从finmance中导入的数据,需要调整x轴时间的显示
ax_vol.xaxis_date()
plt.setp(ax_vol,get_xticklabels(),rotation=30,horizontalalignment='right')
添加k线坐标系
ax_main=fig.add_axes(rect_main)
绘制k线图,此处是quotes为上诉生成的quotes
candlestick_ohlc(ax_main,quotes=quotes,width=0.6,colorup='r',colordown='g')
得到x坐标轴设置x坐标显示为False
ax_main.axes.get_xaxis().set_visible(False)
设置title
ax_main.set_title('Stock INTC Price and Volume')
显示图形
plt.show()
</pre>