软件测试|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")

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑马python就业课

文章目录 初级中级高级初级课程分享 初级 中级 高级 初级课程分享 链接:https://pan.baidu.com/s/1aiJHaThezv_mSI1rnV3d7g 提取码:xdpc

软件测试|Selenium StaleElementReferenceException 异常分析与解决

简介 Selenium 是一个流行的自动化测试工具,用于模拟用户与网页交互。然而,当我们在使用 Selenium 时,可能会遇到一个常见的异常,即 StaleElementReferenceException。这个异常通常在我们尝试与网页上的元素交互时抛出&#xff0…

Nacos服务注册或发现、Nacos服务分级模型、Nacos负载均衡策略、加权负载均衡、Nacos环境隔离

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、nacos服务搭建,nacos服务注册或发现二、Nacos服务分级模型三、Nacos负载均衡策略四、Nacos注册中心(nacos控制台配置)-加…

shell中echo和printf在终端输出时更改文本颜色

shell中更改echo或printf的输出颜色可以使用相应的ANSI转义码(ANSI Escape Codes)来实现:各种常用颜色的ANSI如下所示,截图来自于 geeksforgeeks.org 八进制格式应采用以下格式给出:八进制格式必须以名为\033[的参数为前缀,后跟需要指定的颜色…

Postman工具使用一篇快速入门教程

文章目录 下载安装注册登录CollectionFolderRequestGet请求Post请求Header设置Response响应 EnvironmentsGlobal环境变量其他环境变量Collection变量变量使用同名变量的优先级 Postman内置变量Pre-request script和Test script脚本设置、删除和获取变量获取请求参数获取响应数据…

如何使用创建时间给文件重命名,简单的批量操作教程

在处理大量文件时,有时要按照规则对文件重命名,根据文件的创建时间来重命名。那如何批量操作呢?现在一起来看云炫文件管理器如何用文件的创建时间来批量重命名。 按创建时间重命名文件的前后对比图。 用创建时间批量给文件重命名的步骤&…

redis高级篇之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程? 3、主线程和Io线程是怎么协作完成请求处理的? 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程,4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

微信小程序开发学习笔记《8》tabBar

微信小程序开发学习笔记《8》tabBar 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。tabBar官方文档 tabBar这一节还是相当重要的。 一、什么是tabBar tabBar是移动端应用常见的页面效果,用于实现多页面的快速切换。小…

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II 文章目录 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II1 Le…

Unity中URP中的光照简介

文章目录 前言URP下的光照在Unity中的设置1、主灯设置2、额外灯设置3、反射光设置 前言 我们在这篇文章开始了解URP下的光照。 URP下的光照在Unity中的设置 1、主灯设置 主灯可以选择 禁用 或 逐像素 光照 当选择逐像素光照的主灯后 Cast Shadows:可以选择开启 或…

CMake在静态库中链接静态库

hehedalinux:~/Linux/multi-v2$ tree . ├── calc │ ├── add.cpp │ ├── CMakeLists.txt │ ├── div.cpp │ ├── mult.cpp │ └── sub.cpp ├── CMakeLists.txt ├── include │ ├── calc.h │ └── sort.h ├── lib │ ├── l…

Linux中关于日期和时区的操作(date命令、ntp程序自动校准时间)

1.date命令 语法:date [-d] [格式化字符串] -d 按照给定的字符串显示日期,一般用于日期计算 格式化字符串:通过特定的字符串标记,来控制显示的日期格式 %Y 年 %y 年份后两位数字 (00..99) %m 月份 (01..12) %d 日 (…

【Linux 内核源码分析】进程调度 -CFS 调度器

Linux调度器 Linux内核调度器是负责决定哪个进程在何时执行的组件。它管理着CPU资源的分配和任务的调度,以确保系统资源的合理利用和任务的高效执行。Linux内核中常见的调度器有多种,包括经典的O(1)调度器、CFS(Completely Fair Scheduler&a…

6个免费/商用图片素材网站

推荐6个免费可商用图片素材网站,收藏走一波~ 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 我推荐过很多次的设计素材网站,除了设计类素材,还有很多自媒体可以用到的高清图片、背景图、插画、视频、音频素材等等。网站提供的图…

蓝桥杯省赛无忧 STL 课件16 set

01 set集合 修改set比较方法的常见手段&#xff0c;后面的multiset类似 #include<bits/stdc.h> using namespace std; int main() {set<int,greater<int>> myset;myset.insert(25);myset.insert(17);myset.insert(39);myset.insert(42);for(const auto&…

MySQL的导入导出及备份

一.准备导入之前 二.navicat导入导出 ​编辑 三.MySQLdump命令导入导出 四.load data file命令的导入导出 五.远程备份 六. 思维导图 一.准备导入之前 需要注意&#xff1a; 在导出和导入之前&#xff0c;确保你有足够的权限。在进行导入操作之前&#xff0c;确保目标数据…

视频SDK的技术架构优势和价值

为了满足企业对于高质量视频的需求&#xff0c;美摄科技推出了一款强大的视频SDK&#xff08;软件开发工具包&#xff09;&#xff0c;旨在帮助企业轻松实现高效、稳定的视频功能&#xff0c;提升用户体验&#xff0c;增强企业竞争力。 一、美摄视频SDK的技术实现方式 美摄视…

专业课148,总分410+电子科技大学858信号与系统考研经验电子信息与通信

今年专业课148分&#xff0c;总分410顺利被电子科技大学录取&#xff0c;回望这一年复习还有很多不足&#xff0c;总结一下自己的复习经历&#xff0c;希望对大家复习有所帮助。 数学&#xff1a;&#xff08;多动手&#xff0c;多计算&#xff0c;多总结&#xff0c;打好基础…

Kotlin-变量定义,与类型

Kotlin-变量定义 变量定义整型浮点型字符型整型之间的转换Boolean类型Null安全安全调用Elvis运算 字符串 变量定义 Kotlin可以定义的时候不标明数据的数据类型&#xff0c;编译器会根据初始值确定类型 fun main() {var b:Intvar name "crazyit.org"//声名变量的时…

Rust-数组

数组是一个容器&#xff0c;它在一块连续空间内存中&#xff0c;存储了一系列的同样类型的数据。 数组中元素的占用空间大小必须是编译期确定的。 数组本身所容纳的元素个数也必须是编译期确定的&#xff0c;执行阶段不可变。 如果需要使用变长的容器&#xff0c;可以使用标…