finance库画股市日k线图

首页 > 财经 > 投资 > 正文 2021-06-04

发表自话题:怎么画k线图

mpl_finance是收集,分析和绘制财务数据的一个python模块,可以用来画蜡烛图,k线图等。

这里用到的行情数据源来自于巨潮资讯网-数据-行情中心:http://webapi.cninfo.com.cn/#/marketData

如下图所示,下载指定行情数据,这里以000001平安银行,日期区间为:2020-01-01到2020-04-24

文件内容如下:

具体实现代码如下

import pandas as pd import matplotlib.pyplot as plt import mpl_finance as mpf # 提供计算k线图的函数 from matplotlib.pylab import date2num # 导入日期到数值一一对应的转换工具 import datetime # 1、读取行情数据文件 df_stock = pd.read_csv('000001_SZE.csv',header=0,index_col=None) # header=0表示第一行为列名 # 重置列索引(不然以第一列"证券代码"为列索引,经测试发现会导致读取的列对不上号) df_stock = df_stock.reset_index(drop=False) # drop=False表示不删除以前的索引,这里以前的索引为读取的第一列(即证券代码) ''' # 查看索引 #print(df_stock.index.values) # 保存带索引的列到本地文件 #df_stock.to_csv('bak.csv') # 查看列信息 #print(df_stock.columns) # Index(['index', '证券代码', '交易日期', '开盘价', '最高价', '最低价', '收盘价', '成交数量(股)', '成交金额(元)'], dtype='object') # 输出前10行数据 #print((df_stock.head(10))) ''' # 2、构造传入数据的数据结构quotes #画k线图需传的参数,包括(交易日时间戳,开盘价,收盘价,最高价,最低价) quotes = [] # 构造要画k线图的数据结构,获取第一个日期时刻(20200424),将其转为数字值,后面每个日期-1 for i in range(df_stock.shape[0] + 1): # 遍历每行,shape为dataframe大小(x,y),表示x行y列 if i == 0: # 将交易日期日期转为数字 date_num = date2num(datetime.datetime.strptime(df_stock.ix[[i]].values[0][1],'%Y-%m-%d')) # 1表示第二列,为交易日 date_plt = date_num else: date_plt = date_num - i # 由于csv文件中日期为降序排序,这里为减号 #print(df_stock.ix[[i]].values[0]) # 打印每行数据 ['000001-SZE' '2020-04-24' 13.17 13.28 13.11 13.24 56600161 747473770.46 nan] open = df_stock.ix[[i]].values[0][2] # 开盘价: i行第3列 df_stock.iloc[i]['开盘价'],用这个似乎输出了的列对不上,输出成了下一列值(最高价) close = df_stock.ix[[i]].values[0][5] # 收盘价:i行第5列 high = df_stock.ix[[i]].values[0][3] # 最高价:i行第4列 low = df_stock.ix[[i]].values[0][4] # 最低价:i行第5列 datas = (date_plt,open,close,high,low) #print(datas) # (737539.0, 13.17, 13.24, 13.28, 13.11) quotes.append(datas) # 3、画图 ''' 建立一个fig对象,建立一个axis对象, fig 表示的是要绘制的一个画布, ax 表示的是在fig这个画布的对象上,具体要绘制的对象子图。 fig,ax = plt.subplots()这一句等同于: fig=plt.figure() ax=fig.add_subplot(111) #前面两个1表示1*1个图,后面1表示第一个图 ''' fig, ax = plt.subplots(facecolor=(0, 0.3, 0.6),figsize=(12,8)) # 设置背景颜色,画布大小 fig.subplots_adjust(bottom=0.2) # 设置子图的left,right,top,bootom位置,bottom=0.2是防止x轴下面的值被遮掩 ax.xaxis_date() # 设置X轴刻度为日期时间 plt.xticks(rotation=45) #日期显示的旋转角度 plt.title('000001 pingan bank K-line') # 设置标题 plt.xlabel('time') # 设置x轴名 plt.ylabel('price') # 设置y轴名 # 计算k线图 mpf.candlestick_ochl( ax=ax, # 轴对象 quotes=quotes, # 传入的数据,形式:(time, open, close, high, low, ...) width=0.7, # 这里为日k线的宽度 colorup='r', # close >= open,则为红色 colordown='g', # close < open,则为绿色 alpha=0.7 ) plt.grid(True) # 显示网格线 # 显示 plt.show()

这里计算k线图的函数为candlestick_ochl ,还有一个计算函数为candlestick_ohlc
candlestick_ochl 和 candlestick_ohlc,其本质是一样的,只是需要的dataframe中数据的顺序不同。
candlestick_ochl:需要的数据结构为(date,open,close,high,low) 即:日期,开盘价,收盘价,最高价,最低价
candlestick_ohlc:需要的数据结构为(date,open,high,low,close) 即:日期,开盘价,最高价,最低价,收盘价

运行图如下:

对于同花顺上这一段的日k线,大致是一样的

 

参考资料:

画股市日K线图
https://www.cnblogs.com/pythonicanus/p/9826803.html
获取行列值
https://www.cnblogs.com/Allen-rg/p/9484353.html

 

标签组:[股票

上一篇股票K线图上中间空档想画个圆如何操作?

下一篇如何用Python的pyecharts库绘制K线图

相关阅读

相同话题文章

推荐内容

热门阅读