不管是对量化分析师还是普通的投资者来说,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线图相关推荐

  1. python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...

    用python绘制蜡烛线型k线图是用代码还是绘图工具 import matplotlib.pyplot as plt from matplotlib.dates import DateFormatte ...

  2. python画蜡烛致敬烈士_用python绘制股票图,用python绘制蜡烛线型k线图是用代码还是绘图工具...

    Q1:用python绘制蜡烛线型k线图是用代码还是绘图工具 import matplotlib.pyplot as plt from matplotlib.dates import DateForma ...

  3. 用Python绘制专业的K线图【含源代码】

    使用Python绘制一幅专业的K线图,是量化投资和金融数据分析的必备功课. 下面我将从K线图简介.数据获取.K线图绘制及成交量绘制等方面,结合源代码,一步步实现专业K线图的绘制. K线图简介 K线图又 ...

  4. python绘制k线图的步骤_Python使用PyQtGraph绘制股票行情K线图

    PyQtGraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架, ...

  5. 用 pandas + matplotlib 绘制精美的K线图

    大家好,我是早起. 在使用 Python 进行金融数据分析时,绘制 K线图 是很常见的需求. 但如果使用 matplotlib 从 0 开始绘制,一步一步添加日线.均线.MACD.成交量等指标时,则会 ...

  6. plotly基于dataframe数据绘制股票自定义K线图

    plotly基于dataframe数据绘制股票自定义K线图 #  绘制蜡烛图并自定义可视化形式: import plotly as py import plotly.graph_objs as go ...

  7. 如何使用Matlab绘制常见的K线图(蜡烛图)

    Author Bryce230 e-mail 2540892461@qq.com Software win10,Matlab2018a 关于画K线图,Matlab有一个自带的函数candle,画图效率 ...

  8. Python Matplotlib绘制漂亮的K线图,利用Tushare绘制K线图

    1 引言 做量化分析,难免要将自己的某些指标等绘制在K线图上,或者对某些指标进行改造观察K线图和指标对应的走势关系.那么用Python如何绘制和炒股软件类似的效果呢. 2 准备工具 (1)数据源:Tu ...

  9. python绘制k线图_Python使用PyQtGraph绘制股票行情K线图

    PyQtGraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架, ...

最新文章

  1. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
  2. 启动多个pid_西门子S7-300PLC实现PID控制
  3. 团队科学计算器-模块开发过程
  4. RHEL6基础四十二之RHEL文件共享①NFS
  5. 怎么随时获取Spring的上下文ApplicaitonContext,和Spring管理的Bean
  6. php实现小论坛,PHP开发 小型论坛教程之添加论坛-1
  7. Java连接Memcached进行CRUD
  8. Luogu3350 ZJOI2016 旅行者 最短路、分治
  9. 前端学习(2356):uni基本的插件安装
  10. mysql从库应用负载_线上MySQL数据库高负载的解决思路--再次论程序应用索引的重要性...
  11. Unity+SenseAR教程:用手势发射爱心【源码】
  12. android 桥梁模式,【设计模式】桥接模式
  13. node.js 框架基本功能
  14. Android项目持续集成之Jenkins的使用
  15. 超级硬盘数据恢复软件 4.6.5.0注冊码破解版
  16. java 将月份、星期转换为英文
  17. 微信支付宝个人收款方法
  18. eclipse里面运行tomcat显示无法显示页面
  19. 大疆M210 V2+妙算2-G+LIVOX MID-40使用记录
  20. 行业最常见的7种AGV导航系统方式

热门文章

  1. 当我们在谈SWIFT时,到底在谈什么?
  2. 数据分析中常见的存储方式
  3. 【毕业设计】基于spring boot的图书管理系统 -java 计算机 软件工程
  4. 最长单调递增子序列O(NlogN)算法
  5. 深度学习推荐系统中各类流行的Embedding方法(下)
  6. 文章4:多功能智能跟随行李箱控制系统设计 | 本科毕业设计 - 【资料搜索技巧+参考资源整合】
  7. IE低版本提示下载新的浏览器js--IEOutTips.zip
  8. 360签名工具 linux,360apk签名工具下载
  9. scrapy爬虫实例:凤凰网
  10. 欲报从速,已有56所高校选择云创大学高质量免费直播授课!