使用python绘制股票k线图
1. 需要安装的包
2. 获取数据
使用tushare包导入数据
import tushare as ts
df=ts.get_k_data('000002',start='2019-06-01',end='2019-09-30')
第一个参数’000002‘为股票代码,第二个参数start表示起始时间,第三个参数end表示结束日期。获取的数据df为DataFrame格式的二维表格。
3.调整日期格式
因绘制股票k线图使用的是mpl_finance库candlestick_ochl函数,该函数只能读取数组格式的数据,且其日期数据必须是特定的数字格式,因此,需要对原始数据中的日期数据进行格式的调整,调整代码如下:
import datetime
from matplotlib.pylab import date2num
#定义转换函数
def date_to_num(dates):
num_time=[]
for date in dates:
date_time=datetime.datetime.strptime(date,'%Y-%m-%d'))
num_date =date2num(date)
num_time.append(num_date)
return num_time
将df数据转换为二维数组,并调用date_to_num函数更改日期格式,代码如下:
df_arr=df.values
df_arr[:,0]=date_to_num(df_arr[:,0])
4. 使用python绘制股票k线图
使用mpl_finance库的candlestick_ochl函数,candlestick_ochl函数中的第一个参数ax表示画布子图的名称,第二个参数df_arr表示股价历史数据,第三个参数width表示k线柱的宽度,colorup表示收盘价高于开盘价时柱形的颜色,colordown表示收盘价低于开盘价时的柱形颜色(国内股价使用红色表示涨,绿色表示跌,美股相反因此需要说明这两个参数),alpha表示柱形的颜色透明度。
fig,ax=plt.subplots(figsize=(15,6))
mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup='r',colordown='g',alpha=1)#绘制k线图
plt.grid(True)#绘制网格
ax.xaxis_date()#设置x轴的刻度格式为常规日期格式
绘制k线图如下:
5.添加均线图
为k线图分别添加5日均线和10日均线。
使用rolling函数和mean函数计算5日均线和10日均线数据,代码如下:
df['M5']=df['close'].rolling(5).mean()#5日均线
df['M10']=df['close'].rolling(10).mean()#10日均线
6.为k线图添加日均线图、图标题、坐标轴标签
plt.rcParams['font.sans-serif']=['Simhei']#设置正常显示中文
fig,ax=plt.subplots(figsize=(15,6))
mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup='r',colordown='g',alpha=1)#绘制k线图
plt.plot(df_arr[:,0],df['M5'])#绘制5日均线
plt.plot(df_arr[:,0],df['M10'])#绘制10日均线
plt.grid(True)#绘制网格线
plt.title('万科A')#设置标题
plt.xlabel('日期')#设置x轴标签
plt.ylabel('价格')#设置y轴标签
ax.xaxis_date()#设置x轴的刻度格式为常规日期格式
绘制如图所示: