当前位置: 首页 > news >正文

软件测试|Python数据可视化神器——pyecharts教程(九)

使用pyecharts绘制K线图进阶版

简介

K线图(Kandlestick Chart),又称蜡烛图,是一种用于可视化金融市场价格走势和交易数据的图表类型。它是股票、外汇、期货等金融市场中最常用的技术分析工具之一,可以提供关于价格变动、趋势和市场情绪的重要信息。K线图通常包括四个关键价格点:开盘价、收盘价、最高价和最低价,这些价格点形成了一个矩形(蜡烛)或者一根垂直的线段,便于直观地观察价格走势。

作为Python的数据可视化神器,pyecharts也可以帮我们绘制K线图。本文就为大家介绍一下如何使用pyecharts绘制K线图。

K线图常用配置类

  1. Kline: K线图类,用于创建K线图对象。
  2. opts.AxisOpts:坐标轴配置类,用于设置横坐标轴和纵坐标轴的样式和属性。
  3. opts.DataZoomOpts:数据缩放配置类,用于设置数据缩放的样式和属性。
  4. opts.MarkLineOpts:标线配置类,用于设置标线的样式和属性。
  5. opts.MarkLineItem:标线项类,用于设置标线的类型和数值。
  6. opts.TooltipOpts:提示框配置类,用于设置提示框的样式和属性。

以上是一些常用的配置类,我们可以配置来设置K线图的样式和交互效果。根据具体需求,可以灵活使用这些配置类来定制自己想要的K线图。其他配置类在这里就不一一做介绍了。

绘制基础K线图

首先我们来绘制一个简单的K线图,示例代码如下:

from pyecharts import options as opts
from pyecharts.charts import Kline# 准备K线图的数据
x_data = ["2022-09-01", "2022-09-02", "2022-09-03", "2022-09-04", "2022-09-05"]
y_data = [[90, 120, 80, 110],  # 第一天的K线数据:开盘价、最高价、最低价、收盘价[110, 130, 100, 120],  # 第二天的K线数据[130, 140, 90, 110],  # 第三天的K线数据[110, 130, 100, 120],  # 第四天的K线数据[120, 140, 90, 110],  # 第五天的K线数据
]# 创建K线图对象
kline = (Kline().add_xaxis(xaxis_data=x_data)  # 设置x轴数据.add_yaxis(series_name="K线图",  # 设置数据系列的名称y_axis=y_data,  # 设置y轴数据itemstyle_opts=opts.ItemStyleOpts(color="blue", color0="green"),  # 设置K线图的颜色).set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),  # 设置x轴选项,使其自适应yaxis_opts=opts.AxisOpts(is_scale=True),  # 设置y轴选项,使其自适应title_opts=opts.TitleOpts(title="K线图示例"),  # 设置标题选项)
)# 渲染图表
kline.render("kline.html")

运行脚本,绘制的K线图如下:

当然,我们平时看到的K线图更为复杂,有其他图形和线条帮助我们来看K线图,pyecharts同样也可以帮助我们绘制辅助线条,代码如下:

import random
from pyecharts import options as opts
from pyecharts.charts import Kline# 随机数据
data = []
# 使用嵌套的循环结构生成双层随机嵌套列表
for _ in range(30):inner_list = []# 内层列表个数for _ in range(4):random_num = random.randint(3000, 3500)inner_list.append(random_num)data.append(inner_list)# 创建K线图对象
c = (Kline()# 添加横坐标数据.add_xaxis(["2022/9/{}".format(i + 1) for i in range(30)])# 添加纵坐标数据.add_yaxis("kline",data,# 设置标线配置项,标记最大值markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="max", value_dim="close")]),)# 设置全局配置项.set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),  # 设置横坐标��配置项,is_scale=True表示自适应刻度yaxis_opts=opts.AxisOpts(is_scale=True,  # 设置纵坐标轴配置项,is_scale=True表示自适应刻度splitarea_opts=opts.SplitAreaOpts(is_show=True,  # 设置分割区域配置项,is_show=True表示显示分割区域areastyle_opts=opts.AreaStyleOpts(opacity=1)  # 设置分割区域样式配置项,opacity=1表示不透明),),title_opts=opts.TitleOpts(title="K线图示例2"),  # 设置标题配置项)
)# 渲染为HTML文件
c.render("K线图示例2.html")

运行脚本,生成的图像如下:

很多时候,我们想要看到更短期的价格走向,我们可以在上面的基础上,加上鼠标滑动缩放的效果,便于我们查看短期的价格,代码如下:

import random
from pyecharts import options as opts
from pyecharts.charts import Kline# 随机数据
data = []
# 使用嵌套的循环结构生成双层随机嵌套列表
for _ in range(30):inner_list = []# 内层列表个数for _ in range(4):random_num = random.randint(3000, 3500)inner_list.append(random_num)data.append(inner_list)# 创建K线图对象
c = (Kline()# 添加横坐标数据.add_xaxis(["2022/9/{}".format(i + 1) for i in range(30)])# 添加纵坐标数据.add_yaxis("kline",data,# 设置图表元素样式itemstyle_opts=opts.ItemStyleOpts(color="#ec0000",color0="#00da3c",border_color="#8A0000",border_color0="#008F28",),)# 设置全局配置项.set_global_opts(# 设置横坐标轴配置项,is_scale=True表示自适应刻度xaxis_opts=opts.AxisOpts(is_scale=True),# 设置纵坐标轴配置项,is_scale=True表示自适应刻度yaxis_opts=opts.AxisOpts(is_scale=True,# 设置分割区域配置项,is_show=True表示显示分割区域splitarea_opts=opts.SplitAreaOpts(is_show=True,# 设置分割区域样式配置项,opacity=1表示不透明areastyle_opts=opts.AreaStyleOpts(opacity=1)),),# 设置数据缩放配置项,type_="inside"表示内置缩放datazoom_opts=[opts.DataZoomOpts(type_="inside")],# 设置标题配置项,title="K线图鼠标缩放"为标题内容title_opts=opts.TitleOpts(title="K线图示例3"),)
)# 渲染为HTML文件
c.render("K线图示例3.html")

运行脚本,如下图,我们就可在生成的图像上,滑动鼠标,展示某几天的价格变化信息

如果我们需要查看更长周期的图像,鼠标缩放可能会比较麻烦,我们可以使用滑块的方法来方便我们的查看,具体实现代码如下:

import random
from pyecharts import options as opts
from pyecharts.charts import Kline# 随机数据
data = []
# 使用嵌套的循环结构生成双层随机嵌套列表
for _ in range(30):inner_list = []# 内层列表个数for _ in range(4):random_num = random.randint(3000, 3500)inner_list.append(random_num)data.append(inner_list)# 创建K线图对象
c = (Kline()# 添加横坐标数据.add_xaxis(["2022/9/{}".format(i + 1) for i in range(30)])# 添加纵坐标数据.add_yaxis("kline", data)# 设置全局配置项.set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),  # 设置横坐标轴配置项,is_scale=True表示自适应刻度yaxis_opts=opts.AxisOpts(is_scale=True,  # 设置纵坐标轴配置项,is_scale=True表示自适应刻度splitarea_opts=opts.SplitAreaOpts(is_show=True,  # 设置分割区域配置项,is_show=True表示显示分割区域areastyle_opts=opts.AreaStyleOpts(opacity=1)  # 设置分割区域样式配置项,opacity=1表示不透明),),datazoom_opts=[opts.DataZoomOpts()],  # 设置数据缩放配置项位置在底部偏下title_opts=opts.TitleOpts(title="K线图示例4"),  # 设置标题配置项)
)# 渲染为HTML文件
c.render("K线图示例4.html")

运行脚本,生成的图像如下:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • 确保CentOS系统中的静态HTTP服务器的数据安全
  • 深入了解Java多线程编程:JVM内存模型与同步机制
  • Linux学习记录——사십이 高级IO(3)--- Poll型服务器
  • allegro PCB设计心得笔记(二) PCB板框设计心得
  • 【Golang】IEEE754标准二进制字符串转为浮点类型
  • JsonPath
  • RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用RPA全球生态 2024-01-05 17:27 发表于河北
  • 三国杀移动版武将台词大全-神
  • three.js 关键帧动画
  • GSTAE
  • CCF认证+蓝桥杯习题训练
  • 学习记录之JVM
  • Kafka外网访问
  • android:clickable=“false“无效,依然能被点击
  • Jenkins实现基础CI操作配合python
  • 【翻译】babel对TC39装饰器草案的实现
  • 10个确保微服务与容器安全的最佳实践
  • 2017届校招提前批面试回顾
  • chrome扩展demo1-小时钟
  • docker python 配置
  • github指令
  • gops —— Go 程序诊断分析工具
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • java第三方包学习之lombok
  • leetcode46 Permutation 排列组合
  • uni-app项目数字滚动
  • Vue ES6 Jade Scss Webpack Gulp
  • 复杂数据处理
  • 开源SQL-on-Hadoop系统一览
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端相关框架总和
  • 区块链将重新定义世界
  • 软件开发学习的5大技巧,你知道吗?
  • 算法之不定期更新(一)(2018-04-12)
  • 网页视频流m3u8/ts视频下载
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 新版博客前端前瞻
  •  一套莫尔斯电报听写、翻译系统
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Note)C++中的继承方式
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (分类)KNN算法- 参数调优
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (转)Sql Server 保留几位小数的两种做法
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)OpenStack Hacker养成指南
  • *Django中的Ajax 纯js的书写样式1
  • .net 设置默认首页
  • .NET 事件模型教程(二)
  • .NET 指南:抽象化实现的基类