Python绘制简单版K线图
不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典、很重要的工具。在K线图中,它会绘制每天的最高价、最低价、开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助。
一般来说,我们会从各大券商平台获取K线图,但是这种情况下获得的K线图往往不能灵活调整,也不能适应复杂多变的生产需求。因此我们有必要学习一下如何使用Python绘制K线图。
导入必要库
需要说明的是,这里mpl_finance
是原来的matplotlib.finance
,但是现在独立出来了(而且好像没什么人维护更新了),我们将会使用它提供的方法来绘制K线图;tushare
是用来在线获取股票数据的库;matplotlib.ticker
中有个FuncFormatter()
方法可以帮助我们调整坐标轴;matplotlib.pylab.date2num
可以帮助我们将日期数据进行必要的转化。
import mpl_finance
import tushare as ts
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import ticker
from matplotlib.pylab import date2num
import numpy as npsns.set()
pro = ts.pro_api()
获取行情数据
我们以上证综指18年9月份以来的行情为例。
- 这里我们对数据按照日期做了个排序,因为
tushare
默认提供的数据是最新的数据在最前边; - 我们用
pd.to_datetime()
将字符串日期转换为pandas Timestamp
格式(类似datetime.datetime),然后用date2num转换为matplotlib需要的格式。 - 然后我们另外添加一列
dates
,这一列用于解决mpl_finance
中存在的一些问题,后边我们会详细解释。
绘制K线图
我们先使用mpl_finance
绘制一下,看看是否一切正常。
fig, ax = plt.subplots(figsize=(10,5))
mpl_finance.candlestick_ochl(ax=ax,quotes=df[['trade_date', 'open', 'close', 'high', 'low']].values,width=0.7,colorup='r',colordown='g',alpha=0.7)
ax.xaxis_date()
plt.xticks(rotation=30);
可以看到,所有的节假日包括周末,在这里都会显示为空白,这对于我们图形的连续性非常不友好,因此我们要解决掉他们。
解决空白问题
def format_date(x,pos):if x<0 or x>len(date_tickers)-1:return ''return date_tickers[int(x)]date_tickers = df.trade_date2.values
fig, ax = plt.subplots(figsize=(10,5))
ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
mpl_finance.candlestick_ochl(ax=ax,quotes=df[['dates', 'open', 'close', 'high', 'low']].values,width=0.7,colorup='r',colordown='g',alpha=0.7)
ax.set_title('上证综指K线图(2018.9-)', fontsize=20);
可以看到,空白问题完美解决,这里我们解释一下。由于matplotlib
会将日期数据理解为连续数据,而连续数据之间的间距是有意义的,所以非交易日即使没有数据,在坐标轴上还是会体现出来。连续多少个非交易日,在坐标轴上就对应了多少个小格子,但这些小格子上方并没有相应的蜡烛图。
明白了它的原理,我们就可以对症下药了。我们可以给横坐标(日期)传入连续的、固定间距的数据,先保证K线图的绘制是连续的;然后生成一个保存有正确日期数据的列表,接下来,我们根据坐标轴上的数据去取对应的正确的日期,并替换为坐标轴上的标签即可。
上边format_date
函数就是这个作用。由于前边我们给dates
列生成了从0开始的序列连续数据,因此我们可以直接把它当作索引,从真正的日期列表里去取对应的数据。在这里我们要使用matplotlib.ticker.FuncFormattter()
方法,它允许我们指定一个格式化坐标轴标签的函数,在这个函数里,我们需要接受坐标轴的值以及位置,并返回自定义的标签。
你学会了吗?
当然,一个完整的K线图到这里并没有结束,后边我们会考虑加入均线、成交量等元素,感兴趣的同学欢迎关注哦!
Python绘制简单版K线图相关推荐
- python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...
用python绘制蜡烛线型k线图是用代码还是绘图工具 import matplotlib.pyplot as plt from matplotlib.dates import DateFormatte ...
- python画蜡烛致敬烈士_用python绘制股票图,用python绘制蜡烛线型k线图是用代码还是绘图工具...
Q1:用python绘制蜡烛线型k线图是用代码还是绘图工具 import matplotlib.pyplot as plt from matplotlib.dates import DateForma ...
- 用Python绘制专业的K线图【含源代码】
使用Python绘制一幅专业的K线图,是量化投资和金融数据分析的必备功课. 下面我将从K线图简介.数据获取.K线图绘制及成交量绘制等方面,结合源代码,一步步实现专业K线图的绘制. K线图简介 K线图又 ...
- python绘制k线图的步骤_Python使用PyQtGraph绘制股票行情K线图
PyQtGraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架, ...
- 用 pandas + matplotlib 绘制精美的K线图
大家好,我是早起. 在使用 Python 进行金融数据分析时,绘制 K线图 是很常见的需求. 但如果使用 matplotlib 从 0 开始绘制,一步一步添加日线.均线.MACD.成交量等指标时,则会 ...
- plotly基于dataframe数据绘制股票自定义K线图
plotly基于dataframe数据绘制股票自定义K线图 # 绘制蜡烛图并自定义可视化形式: import plotly as py import plotly.graph_objs as go ...
- 如何使用Matlab绘制常见的K线图(蜡烛图)
Author Bryce230 e-mail 2540892461@qq.com Software win10,Matlab2018a 关于画K线图,Matlab有一个自带的函数candle,画图效率 ...
- Python Matplotlib绘制漂亮的K线图,利用Tushare绘制K线图
1 引言 做量化分析,难免要将自己的某些指标等绘制在K线图上,或者对某些指标进行改造观察K线图和指标对应的走势关系.那么用Python如何绘制和炒股软件类似的效果呢. 2 准备工具 (1)数据源:Tu ...
- python绘制k线图_Python使用PyQtGraph绘制股票行情K线图
PyQtGraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架, ...
最新文章
- python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
- 启动多个pid_西门子S7-300PLC实现PID控制
- 团队科学计算器-模块开发过程
- RHEL6基础四十二之RHEL文件共享①NFS
- 怎么随时获取Spring的上下文ApplicaitonContext,和Spring管理的Bean
- php实现小论坛,PHP开发 小型论坛教程之添加论坛-1
- Java连接Memcached进行CRUD
- Luogu3350 ZJOI2016 旅行者 最短路、分治
- 前端学习(2356):uni基本的插件安装
- mysql从库应用负载_线上MySQL数据库高负载的解决思路--再次论程序应用索引的重要性...
- Unity+SenseAR教程:用手势发射爱心【源码】
- android 桥梁模式,【设计模式】桥接模式
- node.js 框架基本功能
- Android项目持续集成之Jenkins的使用
- 超级硬盘数据恢复软件 4.6.5.0注冊码破解版
- java 将月份、星期转换为英文
- 微信支付宝个人收款方法
- eclipse里面运行tomcat显示无法显示页面
- 大疆M210 V2+妙算2-G+LIVOX MID-40使用记录
- 行业最常见的7种AGV导航系统方式