python绘制股票K线图

  对于上一篇的股票走势数据,运用matplotlib画出其K线图。下边是需要导入的包:

import matplotlib.pyplot as plt
import mpl_finance as mpf
import numpy as np
import pandas as pd
from matplotlib.pylab import date2num

  其中mpf需要提一下,原本的finance可以通过import matplotlib.finance as mpf导入,但是现在由于版本问题finance模块已经从matplotlib2.0.2中脱离出来,需要下载mpl_finance包。

绘制核心代码:

mpf.candlestick_ochl( ax, matrix_data, colorup=***, colordown=***)

  matrix_data 是 np.matrix 对象,matrix_data 中要存放的前五个数据必须是:时间、开盘价、收盘价、最高价、最低价,顺序也要对应起来。下边是我的数据:
在这里插入图片描述

这里的date必须使用 matplotlib.pylab 中的 date2num(datetime) 方法来将datetime对象转换一个特定的时间戳数字。

我使用的是 pandas.DataFrame 来储存数据,利用pd.read_csv() 读取 csv 文件,得到就是一个 DataFrame 对象。图中我的DataFrame对象中包含有 date, open,high, low, close, volume 六列数据。

下边附上绘制代码:

import matplotlib.pyplot as plt
import mpl_finance as mpf
import numpy as np
import pandas as pd
from matplotlib.pylab import date2num

data=pd.read_csv('D:\\python\\machine learning\\share\\EURUSD 60 train.csv',usecols=['date','open','close','high','low','volume'])

#删除空行
data[data['volume']==0]=np.nan     
data=data.dropna()

#按时间升序排列数据
data.sort_values(by='date',ascending=True,inplace=True)
data=data[['date','open','close','high','low','volume']][:3000]#这里由于数据太多,仅取前3000行进行绘制

data.date=pd.to_datetime(data.date)
#将date转化为特定的时间戳数据
data.date=data.date.apply(lambda x:date2num(x))

#将 DataFrame 转为 matrix格式
data_mat=data.as_matrix()

#绘制图片
fig,ax=plt.subplots(figsize=(1200/72,480/72))
fig.subplots_adjust(bottom=0.1)
mpf.candlestick_ochl(ax,data_mat,colordown='#53c156', colorup='#ff1717',width=0.3,alpha=1)
ax.grid(True)
ax.xaxis_date()
plt.show()

成果图:
在这里插入图片描述

  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值