1、序言

前文介绍了如何绘制分时图,可以用subplot()和add_axes(),不过各自都存在一定的缺陷,先保留疑问,今天先学习绘制K线图。

查了资料,以及各位大佬的方法,发现他们提供的绘制K线图都需要用到一个包,mpl_finance,而要调用这个包,相对有点麻烦,有些需要账号密码,有些需要购买。尝试了几次,未成功,也先留着疑问。办法总比困难多。今天介绍一种不用mpl_finance包绘制K线图的方法。

2、K线图绘制原理

单个K线图的主要构成包括开盘价Open,收盘价Close,最高价High,最低价Low,而在《Python学习第一课-----绘制股票分时图》一文中,我们已经可以通过get_price()函数得到这些数据,那么就可以,绘制K线图的数据就有了。

Python学习第一课-----绘制股票分时图_tnt1314的博客-CSDN博客

然后是绘制柱状图,Python可以使用bar()函数绘制柱状图,函数用法如下:

plt.bar(x, y, tick_label=x, width=0.6, bottom=open,color ='red')

x:X轴坐标数据;

y:Y轴坐标数据;

tick_label:X轴标识内容;

width:柱子宽度;

bottom:柱子底图;

color:柱子颜色;

2.1、绘制原理

我们将开盘价,收盘价分为1组,这组为柱状,width设置为0.6,最低价,最高价分为1组,这组为影线,width设置为0.1,然后绘制两个柱状图就可以合成K线图,

2.2、编写程序

还是以002466为例,时间周期为48天,获取数据程序为:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
plt.figure(figsize=(24,12))
dataframe1=get_price('002466.XSHE',end_date='2022-04-30',frequency='1d',count=48)

分别提取出其开盘价Open,收盘价Close,最高价High,最低价Low数组;

myc1=dataframe1['close']
myc2=dataframe1['open']
myc3=dataframe1['high']
myc4=dataframe1['low']

获取X轴与Y轴数据

x = np.arange(48)
y1= myc1 - myc2
y2= myc3 - myc4

设置柱子宽度

bar_width = 0.6
bar_width1 = 0.1

绘制两个柱状图

plt.bar(x, y2, tick_label='',width=bar_width1, bottom=myc4,color ='red')
plt.bar(x, y1, tick_label='',width=bar_width, bottom=myc2,color ='red')
plt.show()

2.3、运行结果

运行结果如下:

对比通达信K线图 

2.4、分析

通过对比发下,K线图的图形我们已经绘制出来,而且上下影线也正确,但存在一个问题,即无法辨别当日的开盘价和收盘价,也无法判断当日涨跌情况,因此还得处理。

3、绘制标准K线图

我们通过分解开盘价Open,收盘价Close,最高价High,最低价Low,然后绘制两组柱状图,可以得到有问题的K线图,但其形状以及数据都是正确的,那么我们再通过拆分,分别用不同的颜色绘制涨和跌的K线图,就可以得到准确的K线图

3.1、数组分拆

先得到4个数组,分别对应涨的柱状图y5,跌的柱状图y6,涨的影线图y7,跌的影线图y8,然后通过数据判断将原来的两个数组分拆,程序如下:

y5 = myc1 - myc2
y6 = myc1 - myc2
y7 = myc3 - myc4
y8 = myc3 - myc4
for k in range(48):
    if myc1[k]>myc2[k]:
        y5[k]=myc1[k]-myc2[k]
        y6[k]=0
        y7[k]=myc3[k]-myc4[k]
        y8[k]=0
    elif  myc1[k]==myc2[k]:
        y5[k]=0.02
        y6[k]=0
        y7[k]=myc3[k]-myc4[k]
        y8[k]=0
    else:
        y5[k]=0
        y6[k]=myc1[k]-myc2[k]
        y7[k]=0
        y8[k]=myc3[k]-myc4[k]

3.2、绘制4个柱状图

数据得到后,用红色标识涨,绿色标识跌,程序如下:

plt.bar(x, y7, tick_label='', width=bar_width1, bottom=myc4,color ='red')
plt.bar(x, y5, tick_label='', width=bar_width, bottom=myc2,color ='red')
plt.bar(x, y8, tick_label='', width=bar_width1, bottom=myc4,color ='green')
plt.bar(x, y6, tick_label='', width=bar_width, bottom=myc2,color ='green')   
plt.show()

3.3、运行结果

运行结果与实际一致,完成K线图的绘制。

4、综述

通过以上柱状图的组合,我们就可以将K线图绘制出来了。当然X轴的坐标标签问题依然存在,接下来学习的重点就是如何将X轴的坐标准确的标出。哈

Python学习第二课-----绘制股票K线图(不使用mpl_finance包)相关推荐

  1. python pyplot k线图_量化之路-python绘图-使用matplotlib绘制股票K线图(附代码)

    最近不知道在瞎忙什么,学习速度有点慢,更新也比较少,需要反思一下. 在学习完python爬虫和获取股票数据技能后,接下来需要将数据输出称为图形,以便查看趋势,以及分析趋势. 重新梳理下需要学会的技能步 ...

  2. python 对数坐标_python3绘制股票K线图--pyQtgraph绘制精美股票K线图--之对数坐标(log Y)呈现...

    之前尝试使用mplfinance库做了K线图的呈现.感觉不是很理想,又找到了这个pyQtgraph库,网络上已经有一些人做了K线图的呈现,但是并不满意.主要是对于经常看盘的人来说,图形呈现的特征很重要 ...

  3. python 绘制k线图_利用python numpy+matplotlib绘制股票k线图的方法

    一.python numpy + matplotlib 画股票k线图 # -- coding: utf-8 -- import requests import numpy as np from mat ...

  4. Python绘制股票K线图

    目录 1 股票K线图知识了解 2 用Python绘制股票K线图 2.1 安装绘制K线图的mpl_finance库 2.2 引入相关库 2.3 用Tushare库获取股票基本数据 2.4 日期格式调整及 ...

  5. 利用 python numpy +matplotlib 绘制股票k线图

    一.python numpy + matplotlib 画股票k线图 # -- coding: utf-8 -- import requests import numpy as np from mat ...

  6. 【Python】绘制股票K线图(烛状图)并增加成交量和移动平均线(详细简单)

    Python绘制股票K线图(烛状图)并增加成交量和移动平均线: 准备工作: 1.这里需要使用到pandas和mplfinance工具库(自行安装好). 2.下载好股票数据,需要包括:时间.开盘价.最高 ...

  7. html5绘制股票图形,股票数据分析(五):绘制股票k线图(js+canvas + Python + json)

    本文介绍:利用 js+canvas 绘制股票k线图 HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来 ...

  8. 利用python—matplotlib绘制股票K线图

    利用python-matplotlib绘制股票K线图 成品展示: 用Python绘制股票K线图并不复杂,不过得做好一些准备工作例如相关库的安装,库的引入.日期格式的调整and表格转换 文章目录 利用p ...

  9. python画k线图_Python+pyqtgraph:跟我学如何绘制股票K线图

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

  10. Tkinter绘制股票K线图

    在前面的文章中,我们一起学习了如何通过 Python 抓取东方财富网的实时股票数据以及如何制作成 Tkinter GUI 程序,链接如下 用 Python 爬取股票实时数据 Tkinter制作股票数据 ...

最新文章

  1. 首个深度强化学习AI,能控制核聚变,成功登上《Nature》
  2. C编译器、链接器、加载器详解
  3. 算法提高课-搜索-双向广搜 AcWing 190. 字串变换:bfs、双向bfs、queue和unordered_map
  4. 贝叶斯反垃圾邮件技术
  5. python安装psutil库及使用
  6. java xpdf 转换成html_java将Word/Excel/PDF文件转换成HTML整理
  7. AE光效插件Optical Flares for Mac出现不显示预览缩略图,如何解决
  8. 设计模式之生成器模式
  9. 唯一分解求正约数个数
  10. linux 网络对时
  11. 常见耳机品牌简介及鉴赏
  12. Python爬虫实战-小说网站爬虫开发
  13. 如何刷访问量 的详细介绍
  14. 核磁计算机系统包括,核磁共振和CAT扫描系统
  15. 制备a-CN_x、CrN、TiCN、TiAlN碳氮化物薄膜-供应锡硫化物薄膜 硫化亚锡(SnS)薄膜 电沉积硫化亚锡(SnS)薄膜 硫化亚锡(SnS)异质结薄膜 简易硫化亚锡(SnS)微米棒薄膜
  16. 在js中实现新窗口打开
  17. 约瑟夫环问题-python代码
  18. 财产、人身、养老保险公司
  19. Protobuf—简介,优缺点
  20. 如何将Nintendo Switch Joy-Con或Pro控制器连接到PC

热门文章

  1. 通过DLL文件实现函数共有及通过调用_stdcall来减少程序文件的大小
  2. smartupload实现文件上传
  3. 设计MP3网页音乐播放器
  4. 如何解决苹果Mac大写键CapsLock不能锁定大小写?
  5. win10系统装服务器2008蓝屏,win10专业版系统出现蓝屏的原因及解决方法
  6. 一篇文章带你认识什么是数学建模
  7. 关于LNode 和* LinkList
  8. 嵌入式单片机基础篇(十九)之一般TFTLCD 模块的使用流程
  9. 实现三级导航demo
  10. 最新行政区划代码省市区三级 乡镇街道四级 村五级 数据库(2021年3月版 )