Python绘制股票日K图(十)汇总日K图、柱状图、折线图
免费获取更多最新股市数据关注头像同名恭祝好!
在一个figure上画三个图,我们首先要给figure添加gridspec,代码如下:
gs = fig.add_gridspec(3, 1, # 三行一列的网格left=0.01, right=0.96, bottom=0.01, top=0.99, # 设置页边距wspace=0.00, hspace=0.12, # 设置行与行之间的距离,列与列之间的距离height_ratios=[0.4, 0.2, 0.2]) # 这边是3行,设置每行占的高度的比例
剩下的就是把之前的代码整合起来,代码如下:
# 汇总日K,换手率柱状图,大资金折线图import pandas
import numpy as np
import matplotlib.pyplot as plt
import mpl_finance as mpfdir_name = 'D:\\gupiao\\'def paint_dayk(code):# 1、获取数据stock_data = pandas.read_csv(dir_name + code + '.txt') # 读取数据begin = len(stock_data) - 120 # 取最近120天的数据if begin < 0: # 如果上市未满120天,则从上市当天开始显示begin = 0fig = plt.figure( # 添加fig对象figsize=(54, 28), # 设置fig大小,长和宽,单位为英寸dpi=120) # 每英寸的像素点数gs = fig.add_gridspec(3, 1, # 三行一列的网格left=0.01, right=0.96, bottom=0.01, top=0.99, # 设置页边距wspace=0.00, hspace=0.12, # 设置行与行之间的距离,列与列之间的距离height_ratios=[0.4, 0.2, 0.2]) # 这边是3行,设置每行占的高度的比例# 2、画日K图ax_rik = fig.add_subplot(gs[0, 0]) # 在fig中添加网格的第一块,并返回一套坐标轴mpf.candlestick2_ochl( # 调用candlestick2_ochl画日K图ax_rik, # 在这套坐标轴内画日K图stock_data.open[begin:], stock_data.close[begin:], # 开盘价和收盘价stock_data.high[begin:], stock_data.low[begin:], # 最高价和最低价width=0.8, colorup='red', colordown='green') # 收盘价大于开盘价则红柱,收盘价小于开盘价则绿柱ax_rik.grid(axis='x', linestyle='-.') # 添加x轴方向的网格ax_rik.grid(axis='y', linestyle='-.') # 添加y轴方向的网格ax_rik.yaxis.tick_right() # 将y轴的数值显示在右边ax_rik.set_xlim(0, len(stock_data.index)-begin, 1) # 设置x轴的范围ax_rik.set_xticks(range(0, len(stock_data.index)-begin, 1)) # 设置x轴的刻度ax_rik.axes.set_xticklabels(stock_data.week[begin:])for label in ax_rik.xaxis.get_ticklabels(): # 设置x轴标签的字体大小label.set_fontsize(16)for label in ax_rik.yaxis.get_ticklabels(): # 设置y轴标签的字体大小label.set_fontsize(40)# 绘制移动平均线图stock_data['Ma5'] = stock_data.close.rolling(window=5).mean() # 求5日均线stock_data['Ma10'] = stock_data.close.rolling(window=10).mean() # 求10日均线stock_data['Ma20'] = stock_data.close.rolling(window=20).mean() # 求20日均线ax_rik.plot(np.arange(0, len(stock_data.index)-begin), # [x]的数据范围stock_data['Ma5'][begin:], # [y]的数据范围'black', # 均线颜色label='M5', # 均线标签lw=2.5) # 均线宽度ax_rik.plot(np.arange(0, len(stock_data.index)-begin), stock_data['Ma10'][begin:], 'orange', label='M10', lw=2.5)ax_rik.plot(np.arange(0, len(stock_data.index)-begin), stock_data['Ma20'][begin:], 'purple', label='M20', lw=2.5)# 3、绘制换手柱状图ax_hsl = fig.add_subplot(gs[1, 0]) # 在fig中添加网格的第一块,并返回一套坐标轴hsl_zzt = ax_hsl.bar(np.arange(0, len(stock_data.index) - begin),stock_data.change[begin:],color=['g' if stock_data.open[x] > stock_data.close[x] else 'r' for x in range(begin, len(stock_data.index))])ax_hsl.bar_label(hsl_zzt, # 要打标签的柱状图labels=stock_data.dealLabel[begin:], # 标签,为当日的成交额(亿)label_type='edge', # 标签显示的位置,edge(顶部),center(柱状图中间)fontsize='28', # 标签字体大小fmt="%.f") # 标签数据格式ax_hsl.grid(axis='x', linestyle='-.') # 添加x轴方向的网格ax_hsl.grid(axis='y', linestyle='-.') # 添加y轴方向的网格ax_hsl.yaxis.tick_right() # 将y轴的数值显示在右边ax_hsl.set_xlim(0, len(stock_data.index) - begin, 1) # 设置x轴的范围ax_hsl.set_xticks(range(0, len(stock_data.index) - begin, 1)) # 设置x轴的刻度ax_hsl.axes.set_xticklabels(stock_data.week[begin:])for label in ax_hsl.xaxis.get_ticklabels(): # 设置x轴标签的字体大小label.set_fontsize(16)for label in ax_hsl.yaxis.get_ticklabels(): # 设置y轴标签的字体大小label.set_fontsize(40)# 4、绘制大资金折线图ax_dzj = fig.add_subplot(gs[2, 0]) # 在fig中添加网格的第一块,并返回一套坐标轴ax_dzj.plot(np.arange(0, len(stock_data.index) - begin),stock_data.mainBuy[begin:], # 大资金流入的数据c='red', # 折线颜色marker='o', # 折线上点的形状markersize=2.6) # 点的大小ax_dzj.plot(np.arange(0, len(stock_data.index) - begin),stock_data.mainSell[begin:], # 大资金流出的数据c='green', # 折线颜色marker='o', # 折线上点的形状markersize=2.6) # 点的大小dzj_zzt = ax_dzj.bar(np.arange(0, len(stock_data.index) - begin),stock_data.deal[begin:],color='white')ax_dzj.bar_label(dzj_zzt,labels=stock_data.cjePaiMing[begin:],label_type='edge',fontsize='28',fmt="%.f")ax_dzj.grid(axis='x', linestyle='-.') # 添加x轴方向的网格ax_dzj.grid(axis='y', linestyle='-.') # 添加y轴方向的网格ax_dzj.yaxis.tick_right() # 将y轴的数值显示在右边ax_dzj.set_xlim(0, len(stock_data.index) - begin, 1) # 设置x轴的范围ax_dzj.set_xticks(range(0, len(stock_data.index) - begin, 1)) # 设置x轴的刻度ax_dzj.axes.set_xticklabels(stock_data.week[begin:])for label in ax_dzj.xaxis.get_ticklabels(): # 设置x轴标签的字体大小label.set_fontsize(16)for label in ax_dzj.yaxis.get_ticklabels(): # 设置y轴标签的字体大小label.set_fontsize(40)# 5、输出日K图plt.savefig(dir_name + code + '.jpg') # 保存图片def main():code = '000001'paint_dayk(code)if __name__ == '__main__':main()
生成的图形如下:
更多数据下载:股票数据,最近两百天,更新到了20220809-数据集文档类资源-CSDN下载
Python绘制股票日K图(十)汇总日K图、柱状图、折线图相关推荐
- Python绘制股票日K图(九)给折线图加标签
股票当日成交额在股市的排名说明了市场对它的关注度,也是一个很好的指标. 免费获取更多最新股市数据关注头像同名恭祝好! 相应的代码同Python绘制股票日K图(七)给柱状图加上标签差不多,只不过需要注意 ...
- Python绘制股票K线图
目录 1 股票K线图知识了解 2 用Python绘制股票K线图 2.1 安装绘制K线图的mpl_finance库 2.2 引入相关库 2.3 用Tushare库获取股票基本数据 2.4 日期格式调整及 ...
- 【python科研绘图】双y轴并列柱状图+折线图+数据表结合,并封装图形绘制函数
双y轴并列柱状图+折线图+数据表结合 1. 论文原图 2 数据准备 3 代码实现步骤拆解 3.1 导入第三方库 3.2 数据赋值 3.3 数据绘图 4 函数封装 手动反爬虫: 原博地址 https:/ ...
- Origin: 双Y轴 | 柱状图 | 折线图 | 垂线散点图的结合绘制
origin | 双Y轴 | 添加图层 | 柱状图 | 折线图 | 散点图 一.前言 二.数据准备 三.绘图 3.1 图层1-绘制柱状图 3.2 图层2-折线图的绘制 3.2.1 添加新图层-折线图 ...
- 【最简单的python画折线图】半封装式代码画折线图,防止写重复代码
一.为什么要写这个代码 很多时候画散点的折线图时,总是忘记代码细节怎么写,于是就想不如花点时间写几个函数,把画图的功能封装一下,下次画图这部分代码就能与其他代码隔离开来.使用者无需过多关注内部细节,只 ...
- Java使用POI生成折线图导出到word文档(折线图)
本篇文章主要介绍,如何使用Apache POI组件生成折线图导出到word文档中,具体步骤看下文. 一.实现效果 Java使用POI技术生成折线图导出到word文档中,最终生成的折线图如下所示: 二. ...
- java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换、更新内置Excel数据、更新插入的文本框内容、合并表格单元格;
本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533 在参考文章的基础上,增加了扩展.感谢被参考的妹子.另外该博客 ...
- php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php
最近写的一个GD图库用以生成横竖柱状图和折线图的类库,算是一个教学例程吧 Class ImageReport{ var $X;//图片大小X轴 var $Y;//图片大小Y轴 var $R;//背影色 ...
- 柱状图折线图混合使用
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>柱状图 ...
- Echarts实现堆叠柱状图+折线图
Echarts实现堆叠柱状图+折线图,以便后续使用时复制 //堆疊Bar圖+折線圖 option = {title: {text: '动态数据',subtext: '纯属虚构'},tooltip: { ...
最新文章
- 在symfony2项目中100%提升doctrine的性能
- tensorflow随笔-条件循环语句求解一元多次方程
- 根据pid判断某个进程是否存在
- 戴尔为例 浅谈电子商务时代客户关系管理
- 这个年纪,喜欢你的肉体还会送你包的,原来是......
- linux虚拟机ip修改无效
- 如何写dblink?
- idea使用activiti插件
- R语言中管道操作 %%, %T%, %$% 和 %%
- 牛顿插值法,泰勒公式
- 汉王手写板linux驱动下载,Hanwang汉王
- java.sql.SQLException: The server time zone value ' й ʱ ' is unrecognized or represents more tha
- 星际争霸2的移动机制-初探
- nginx的安装和配置
- 【原创游戏】迷踪失路——恐怖风格的第一人称迷宫游戏
- 批量取消bilibili关注
- 异常恶毒的十二星座性格分析(转)
- (完结)Unity游戏开发——新发教你做游戏(七):Animator控制角色动画播放
- 对产品经理来说,PMP和NPDP两个证书,哪一个权威性比较大?
- IOS苹果ipa重签名工具(苹果签名工具,ios签名工具,支持Windows系统和Macos系统)