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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单的天天酷跑小游戏实现

初级函数实现人物,背景,小乌龟的移动 #include <graphics.h> #include <iostream> #include <Windows.h> #include "tools.h" #include <mmsystem.h> #include <conio.h> #include <time.h>//时间头文件 #include <cstdlib&g…

ros2+gazebo(ign)激光雷达+摄像头模拟

虽然ign不能模拟雷达&#xff0c;但是摄线头是可以模拟的。 好了现在都不用模拟了&#xff0c;ign摄线头也模拟不了。 ros2ign gazebo无法全部模拟摄线头和雷达。 只能有这样2个解决方法&#xff1a; 方法1&#xff1a;使用ros2 gazebo11 方案2&#xff1a;使用ros2买一个实…

【QT】QMessageBox 弹出消息框,对话确认框(确定/取消)

1.无互动 QMessageBox::information(nullptr,"信息","登陆成功");2.互动&#xff1a;确定、取消 QMessageBox::StandardButton box; box QMessageBox::question(this, "提示", "确定要添加吗?", QMessageBox::Yes|QMessageBox::…

多种格式图片的制作方法,二维码生成器在线使用教学

图片现在通过二维码展示的场景有很多&#xff0c;比如常见的宣传海报、人员资料、信息展示、自拍等类型的图片都可以做成二维码图片查看。那么如果想要制作图片二维码的小伙伴&#xff0c;使用图片二维码生成器来制作会比较的简单快捷&#xff0c;下面就来给大家介绍一下其具体…

uniapp中uview组件库丰富的CountTo 数字滚动使用方法

目录 #平台差异说明 #基本使用 #设置滚动相关参数 #是否显示小数位 #千分位分隔符 #滚动执行的时机 #API #Props #Methods #Event 该组件一般用于需要滚动数字到某一个值的场景&#xff0c;目标要求是一个递增的值。 注意 如果给组件的父元素设置text-align: cente…

NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢

前言 原文&#xff1a;Foreword 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 我有幸在我还是学生的时候见到了了不起的 Alan Perlis&#xff0c;并和他交谈了几次。他和我共同深爱和尊重两种非常不同的编程语言&#xff1a;Lisp 和 APL。跟随他的脚步是一项艰巨的任…

想成为一名C++开发工程师,需要具备哪些条件?

C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能&#xff0c;但仍然保…

JVM知识总结(持续更新)

这里写目录标题 java内存区域程序计数器虚拟机栈本地方法栈堆方法区 java内存区域 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域&#xff1a; 程序计数器虚拟机栈本地方法栈堆方法区 程序计数器 记录下一条需要执行的虚拟机字节码指令…

图像异或加密及唯密文攻击

异或加密 第一种加密方式为异或加密&#xff0c;异或加密的原理是利用异或的可逆性质&#xff0c;原始图像的像素八位bit分别与伪随机二进制序列异或&#xff0c;得到的图像就为加密图像。如下图对lena图像进行加密。 伪随机序列为一系列二进制代码&#xff0c;它受加密秘钥控…

uniapp中uview组件库的AlertTips 警告提示使用方法

目录 #使用场景 #平台差异说明 #基本使用 #图标 #可关闭的警告提示 #API #Props #Events 警告提示&#xff0c;展现需要关注的信息。 #使用场景 当某个页面需要向用户显示警告的信息时。非浮层的静态展现形式&#xff0c;始终展现&#xff0c;不会自动消失&#xff0…

【Kafka-3.x-教程】-【七】Kafka 生产调优、Kafka 压力测试

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

【深度学习每日小知识】Training Data 训练数据

训练数据是机器学习的基本组成部分&#xff0c;在模型的开发和性能中起着至关重要的作用。它是指用于训练机器学习算法的标记或注释数据集。以下是与训练数据相关的一些关键方面和注意事项。 Quantity 数量 训练数据的数量很重要&#xff0c;因为它会影响模型的泛化能力。通常…

软件测试|教你使用Python绘制正多边形

简介 绘制正多边形是Python图形编程的基本任务之一。在本文中&#xff0c;我将为你提供一个使用Python绘制正多边形的详细教程&#xff0c;并提供一个示例代码。我们将使用Python的Turtle库来进行绘制。 步骤1&#xff1a;导入Turtle库 我们需要先安装好Python环境&#xff…

教育观察期刊投稿邮箱、投稿要求

《教育观察》创刊于2012年&#xff0c;是国家新闻出版总署批准的正规教育类学术期刊&#xff0c;本刊致力于在教育实践中以“观察”为方法&#xff0c;以“观察者”为主体&#xff0c;以“新观察”为旨趣&#xff0c;打造从教育实践中洞察教育未来的教育研究与交流的平台。主要…

接雨水的四种姿势——一篇文章彻底弄懂接雨水问题

前言 leetcode 42. 接雨水是一道业内著名的hard题&#xff0c;多次出现在面试场上&#xff0c;经久不衰&#xff0c;难住了一届又一届的候选人。 作为leetcode上热度最高的题目之一&#xff0c;题目评论区也是好一番热闹景象。有人表示看了三天做不出来&#xff0c;有人在评论…

每日算法打卡:蚂蚁感冒 day 13

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例1&#xff1a;输出样例1&#xff1a;输入样例2&#xff1a;输出样例2&#xff1a; 题目分析示例代码 原题链接 1211. 蚂蚁感冒 题目难度&#xff1a;简单 题目来源&#xff1a;第五届蓝桥杯省赛C A/B组 题目描述…

纯 JavaScript 生成UUID和随机MD5值

在开发中&#xff0c;我们经常需要生成唯一的标识符或随机的哈希值。在这篇博客中&#xff0c;我将介绍如何使用纯 JavaScript 生成 UUID&#xff08;通用唯一标识符&#xff09;和随机 MD5 值的方法。这些方法适用于前端和后端开发&#xff0c;让我们一起深入浅出地了解吧。 前…

this.setState的注意事项

目录 1、this.setState的注意事项 2、是什么造成了this.setState()的不同步&#xff1f; 3、 那this.setState()什么时候同步&#xff0c;什么时候不同步&#xff1f; 3.1 经过React包装的onClick点击事件&#xff08;&#xff09; 3.2 没经过React包装的 原生点击事件 …

浅析Linux进程管理:current宏实现

本文基于Linux 5.10.186版本内核源码进行分析。 文章目录 current概述早期内核版本实现最新版本内核实现x86体系下的current宏实现ARMv8体系下的current实现 相关参考 current概述 Linux内核在运行时经常需要访问当前运行进程的task_struct指针&#xff0c;于是&#xff0c;系…

ptaR7-6/zzuli2106 有去有回

题目 输入n个整数&#xff0c;第一趟按从左到右间隔k个数取数据&#xff0c;然后第二趟再从右到左间隔k-1个数取余下的数&#xff0c;如果数据没有取完&#xff0c;下一趟再间隔k-2个从左到右取数据&#xff0c;如此反复&#xff0c;直到所有的数据取完为止。注意&#xff1a;…