Python可视化在量化交易中的应用(15)_Seaborn箱线图小提琴图

news2024/11/15 15:58:41

Seaborn中箱线图和小提琴图的绘制方法
箱线图和小提琴图常被用来观测数据的中位数、上下四分位数分布范围以及异常值的分布情况。
seaborn中绘制箱线图使用的是sns.boxplot()函数。
sns.boxplot(x,y,hue,data,order,hue_order,orient,color,palette,saturation=0.75,width=0.8,dodge,fliersize=5,linewidth,whis=1.5,ax,**kwargs,)
关键常用参数说明:
x, y:指定要绘制箱线图的数据,x和y分别表示数据在x轴和y轴上的位置。其中,x和y参数只能指定一个,另一个参数需设置为None。
hue:可选参数,用于按照某个分类变量对数据进行分组,绘制不同颜色的箱线图。默认值为None,表示不进行分组。
data:指定要绘制箱线图的数据集,可以是DataFrame、Series、数组或列表等。
order:可选参数,用于指定箱线图中箱体的顺序。默认值为None,表示按照数据的顺序绘制箱体;可以设置为一个列表或数组,指定箱体的顺序。
hue_order:可选参数,用于指定分组变量的顺序。默认值为None,表示按照数据的顺序绘制分组变量;可以设置为一个列表或数组,指定分组变量的顺序。
orient:可选参数,用于指定箱线图的方向。默认值为"v",表示垂直方向;可以设置为"h",表示水平方向。
palette:可选参数,用于指定颜色调色板。默认值为None,表示使用默认的颜色调色板;可以设置为一个颜色调色板名称或一个颜色列表。
width:可选参数,用于指定箱体的宽度。默认值为0.8,表示箱体的宽度为整个数据范围的80%;可以设置为一个浮点数,表示宽度的比例。
dodge:可选参数,用于指定是否对分组变量进行分开绘制。默认值为False,表示不分开绘制;可以设置为True,表示分开绘制。
fliersize:可选参数,用于指定异常值的大小。默认值为5,表示异常值的大小为5个像素;可以设置为一个整数,表示大小的值。
linewidth:可选参数,用于指定箱线图的线宽。默认值为1,表示线宽为1个像素;可以设置为一个整数,表示线宽的值。
whis:可选参数,用于指定箱线图中异常值的范围。默认值为1.5,表示异常值的范围为上下四分位数加减1.5倍的四分位距;可以设置为一个浮点数,表示异常值的范围的倍数。
ax:可选参数,用于指定绘制箱线图的坐标轴对象。默认值为None,表示使用当前坐标轴。
**kwargs:用于传递其他绘图参数,例如图像的标题、标签、颜色等。

seaborn中绘制小提琴图使用的是violinplot()函数。
sns.violinplot(x,y,hue,data,order,hue_order,bw=‘scott’,cut=2,scale=‘area’,scale_hue,gridsize=100,width=0.8,inner=‘box’,split,dodgee,orient,linewidth,color,palette,saturation=0.75,ax,**kwargs,)
关键常用参数说明:
x, y:指定要绘制小提琴图的数据,x和y分别表示数据在x轴和y轴上的位置。其中,x和y参数只能指定一个,另一个参数需设置为None。
hue:可选参数,用于按照某个分类变量对数据进行分组,绘制不同颜色的小提琴图。默认值为None,表示不进行分组。
data:指定要绘制小提琴图的数据集,可以是DataFrame、Series、数组或列表等。
order:可选参数,用于指定小提琴图的顺序。默认值为None,表示按照数据的顺序绘制小提琴图;可以设置为一个列表或数组,指定小提琴图的顺序。
hue_order:可选参数,用于指定分组变量的顺序。默认值为None,表示按照数据的顺序绘制分组变量;可以设置为一个列表或数组,指定分组变量的顺序。
bw:可选参数,用于指定小提琴图的核密度估计带宽。默认值为"scott",表示使用Scott方法计算带宽;可以设置为一个浮点数,表示带宽的值。
cut:可选参数,用于指定小提琴图的尾部截断方式。默认值为None,表示不进行尾部截断;可以设置为一个数值,表示尾部截断的百分比。
scale:可选参数,用于指定小提琴图宽度的缩放因子。默认值为"area",表示根据样本数量自动缩放宽度;可以设置为"width",表示根据指定的宽度进行缩放。
scale_hue:可选参数,用于指定小提琴图在hue分组时的宽度缩放因子。默认值为1,表示不进行宽度缩放;可以设置为一个浮点数,表示宽度的缩放因子。
gridsize:可选参数,用于指定核密度估计的网格大小。默认值为100,表示网格大小为100x100;可以设置为一个整数,表示网格大小的值。
width:可选参数,用于指定小提琴图的宽度。默认值为0.8,表示宽度为整个数据范围的80%;可以设置为一个浮点数,表示宽度的比例。
inner:可选参数,用于指定小提琴图内部的表示方式。默认值为"box",表示绘制箱线图;可以设置为"quartile",表示绘制四分位线;可以设置为"point",表示绘制散点图;可以设置为"stick",表示绘制线段。
split:可选参数,用于指定是否将小提琴图的两侧分开显示。默认值为False,表示不分开显示;可以设置为True,表示分开显示。
orient:可选参数,用于指定小提琴图的方向。默认值为"v",表示垂直方向;可以设置为"h",表示水平方向。
palette:可选参数,用于指定颜色调色板。默认值为None,表示使用默认的颜色调色板;可以设置为一个颜色调色板名称或一个颜色列表。
ax:可选参数,用于指定绘制小提琴图的坐标轴对象。默认值为None,表示使用当前坐标轴。
**kwargs:用于传递其他绘图参数,例如图像的标题、标签、颜色等。
【例5.17】使用seaborn绘制平安银行2023年一季度开盘价、收盘价、最高价和最低价的箱线图和小提琴图
代码如下:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置为默认字体
plt.rcParams['font.family'] = 'SimHei'
# 显示负数
plt.rcParams['axes.unicode_minus'] = False

# 导入数据
df = pd.read_excel("2023年一季度A股日线行情.xlsx")

# 将日期列转化为日期格式
df["trade_date"] = df["trade_date"].astype("str").apply(lambda x:x[:4]+"-"+x[4:6]+"-"+x[6:])
# 将日期列转换为日期类型,并设置为索引列
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index('trade_date', inplace=True)

# 筛选出股票代码是"000001.SZ"平安的股票
stock = df[df['ts_code'] == '000001.SZ']

# 绘制开盘价、收盘价、最高价、最低价的箱线图
# 设置各个子图的标题
titles = ['open', 'close', 'high', 'low']

# 创建一个2x2的子图布局
fig, ax = plt.subplots(2, 2, figsize=(10, 10))

# 依次创建各个箱线图子图
for i in range(4):
    prices = stock[titles[i]]
    sns.boxplot(data=prices, ax=ax[i//2][i%2])
    ax[i//2][i%2].set_title(titles[i])
    ax[i//2][i%2].set_xlabel("Price")
    ax[i//2][i%2].set_ylabel("Frequency")
plt.show()

代码运行效果如下图所示:
在这里插入图片描述

在【例5.17】代码的基础上补充以下代码:

# 箱线图转化为小提琴图
# 创建一个2x2的子图布局
fig, ax = plt.subplots(2, 2, figsize=(10, 10))

# 依次创建各个子图
for i in range(4):
    prices = stock[titles[i]]
    sns.violinplot(data=prices, ax=ax[i//2][i%2])
    ax[i//2][i%2].set_title(titles[i])
    ax[i//2][i%2].set_xlabel("Price")
    ax[i//2][i%2].set_ylabel("Frequency")
plt.show()

该代码段的运行效果如下图所示:
在这里插入图片描述

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

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

相关文章

C语言 功能型API --------------------strcat()

NAME strcat, strncat - concatenate two strings 头文件 SYNOPSIS #include <string.h> 函数原型&#xff1a; char *strcat(char *dest, const char *src); 功能&#xff1a; 在字符串dest的末尾将字符串src拼接上去 #include <stdio.h> #inc…

227、仿真-基于51单片机锅炉热电偶PT100铂电阻温度控制Proteus仿真设计(程序+Proteus仿真+原理图+流程图+元器件清单+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图 三、原理图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&…

LlamaGPT -基于Llama 2的自托管类chatgpt聊天机器人

LlamaGPT一个自托管、离线、类似 ChatGPT 的聊天机器人&#xff0c;由 Llama 2 提供支持。100% 私密&#xff0c;不会有任何数据离开你的设备。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、如何安装LlamaGPT LlamaGPT可以安装在任何x86或arm64系统上。 首先确保…

网络编程(TCP和UDP的基础模型)

一、TCP基础模型&#xff1a; tcp Ser&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <string.h> #include <head.h>#define PORT 88…

探索无限创造力的星辰大道,画出想象的浩瀚宇宙!-turtle

介绍 视频教程地址在此&#xff1a;https://www.bilibili.com/video/BV1Pm4y1H7Tb/ 大家好&#xff0c;欢迎来到本视频&#xff01;今天&#xff0c;我们将一同探索Python编程世界中的一个有趣而创意的库——Turtle库。无需专业绘画技能&#xff0c;你就可以轻松地用代码绘制…

docker的安装与基础使用

一.docker简介 1&#xff09;什么是docker Docker是一种用于构建、打包和运行应用程序的开源平台。它基于操作系统级虚拟化技术&#xff0c;可以将应用程序和其依赖的库、环境等资源打包到一个可移植的容器中&#xff0c;形成一个轻量级、独立的可执行单元。 开发者在本地编…

QT TLS initialization failed问题(已解决) QT基础入门【网络编程】openssl

问题: qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed 这个问题的出现主要是使用了https请求:HTTPS ≈ HTTP + SSL,即有了加密层的HTTP 所以Qt 组件库需要OpenSSL dll 文件支持HTTPS 解决: 1.加入以下两行代码获取QT是否支持opensll以…

【学会动态规划】单词拆分(24)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

向gitee推送代码

目录 一、Gitee创建仓库 二、将刚刚创建的仓库放到虚拟机上 2.1 https 方式克隆仓库 2.2 ssh的方式克隆仓库 三、本地开发&#xff0c;推送 3.1 查看是否有远程库 3.2 推送代码 3.3 查看是否推送成功 一、Gitee创建仓库 二、将刚刚创建的仓库放到虚拟机上 2.1 https 方式…

codesys和HMI通讯

codesys可视化有2种&#xff1a; 网页web // 类似于路由器管理那样&#xff0c;登录网页就能操作 本地HMI // 其他品牌的触摸屏 符号配置&#xff1a; 1 编译需要的变量 2 导出XML文件 3 触摸屏软件加载XML文件

kafka--kafka的基本概念-topic和partition

一、kafka的基本概念-topic和partition 1、topic &#xff08;主题 &#xff09; topic是逻辑概念 以Topic机制来对消息进行分类的&#xff0c;同一类消息属于同一个Topic&#xff0c;你可以将每个topic看成是一个消息队列。 生产者&#xff08;producer&#xff09;将消息发…

我只是用了个“笨”方法,一个月后不再惧怕英文文档

在日常工作中&#xff0c;尤其是程序员时时刻刻都会与英文打交道&#xff0c;虽然我们尽可能的在互联网和中文书籍中寻找我们需要的信息&#xff0c;但是&#xff0c;有时候总是不尽人意。对待翻译过来的文档或者书本可能有些定义依然无法明确理解&#xff0c;回到它原有的场景…

【二叉树前沿篇】树

【二叉树前沿篇】树 1 树的概念2. 树的相关概念3. 树的表示4. 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是…

Django模型基础

文章目录 一、models字段类型概述属性命名限制使用方式逻辑删除和物理删除常用字段类型 二、常用字段参数常用字段选项(通过字段选项&#xff0c;可以实现对字段的约束) 实践创建模型执行迁移命令 并 创建超级用户登录admin后台添加文件和图片字段定义模型字段和约束及在Admin后…

C#生产流程控制(串行,并行混合执行)

开源框架CsGo https://gitee.com/hamasm/CsGo?_fromgitee_search 文档资料&#xff1a; https://blog.csdn.net/aa2528877987/article/details/132139337 实现效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37…

大语言模型之四-LlaMA-2从模型到应用

最近开源大语言模型LlaMA-2火出圈&#xff0c;从huggingface的Open LLM Leaderboard开源大语言模型排行榜可以看到LlaMA-2还是非常有潜力的开源商用大语言模型之一&#xff0c;相比InstructGPT&#xff0c;LlaMA-2在数据质量、培训技术、能力评估、安全评估和责任发布方面进行了…

图像处理常见的两种拉流方式

传统算法或者深度学习在进行图像处理之前&#xff0c;总是会首先进行图像的采集&#xff0c;也就是所谓的拉流。解决拉流的方式有两种&#xff0c;一个是直接使用opencv进行取流&#xff0c;另一个是使用ffmpeg进行取流&#xff0c;如下分别介绍这两种方式进行拉流处理。 1、o…

基于深度学习创建-表情符号--附源码

表情符号深度学习概述 如今,我们使用多种表情符号或头像来表达我们的心情或感受。它们充当人类的非语言线索。它们成为情感识别、在线聊天、品牌情感、产品评论等的关键部分。针对表情符号驱动的故事讲述的数据科学研究不断增加。 从图像中检测人类情绪非常流行,这可能是由…

【ROS】参数服务器--理论模型与参数操作(C++)

一、概念介绍 参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据。 作用&#xff1a;存储一些多节点…

Gradio详细文档——快速部署可视化人工智能应用

前言 Gradio是一个开源的Python库&#xff0c;用于快速构建机器学习和数据科学演示的应用。它可以帮助你快速创建一个简单漂亮的用户界面&#xff0c;以便向客户、合作者、用户或学生展示你的机器学习模型。此外&#xff0c;还可以通过自动共享链接快速部署模型&#xff0c;并获…