Python可视化在量化交易中的应用(13)_Seaborn直方图

news2024/12/29 13:38:17

Seaborn中带核密度的直方图的绘制方法

seaborn中绘制直方图使用的是sns.histlot()函数:
sns.histplot(data,x,y,hue,weights,stat=‘count’,bins=‘auto’,binwidth,binrange,discrete,cumulative,common_bins,common_norm,multiple=‘layer’,element=‘bars’,fill,shrink=1,kde,kde_kws,line_kws,thresh=0,pthresh,pmax,cbar,cbar_ax,cbar_kws,palette,hue_order,hue_norm,color,log_scale,legend,ax,**kwargs,)

关键常用参数说明:

data:必需的参数,用于指定数据集。可以是一个Pandas的DataFrame、Numpy的数组、Python的列表或其他类似的数据结构。
x, y:可选参数,用于指定数据集中直方图的x轴和y轴数据。通常情况下,只需要指定x轴数据。
hue:可选参数,用于指定分类变量,根据该变量的不同取值,直方图的颜色会有所区分。
stat:可选参数,用于指定直方图的统计量。默认值为"count",表示计算每个箱体中的观测数量;可以设置为其他值,如"probability"、“density"等。
bins:可选参数,用于指定直方图的箱体数量。可以是一个整数,表示箱体的数量;也可以是一个序列,表示每个箱体的边界值。
binwidth:可选参数,用于指定直方图的箱体宽度。可以是一个整数或浮点数,表示箱体的宽度;也可以是一个字符串,表示使用自动计算的宽度。
binrange:可选参数,用于指定直方图的箱体范围。可以是一个元组,表示箱体的最小值和最大值;也可以是一个字符串,表示使用数据集的最小值和最大值。
cumulative:可选参数,用于指定是否绘制累积直方图。默认值为False,表示不绘制累积直方图;可以设置为True,表示绘制累积直方图。
kde:可选参数,用于指定是否绘制核密度估计曲线。默认值为False,表示不绘制核密度估计曲线;可以设置为True,表示绘制核密度估计曲线。
multiple:可选参数,用于指定是否绘制多个直方图。默认值为False,表示只绘制一个直方图;可以设置为True,表示绘制多个直方图。
element:可选参数,用于指定绘图元素的类型。默认值为"bars”,表示绘制柱状图;可以设置为其他值,如"step"、"poly"等。
shrink:可选参数,用于指定直方图的缩放因子。默认值为1,表示不缩放;可以设置为其他值,如0.5、0.8等。
ax:可选参数,用于指定绘图的坐标轴。如果没有指定,则会创建一个新的坐标轴。
**kwargs:用于传递其他绘图参数,例如图像的标题、标签、颜色等。

使用Seaborn绘制直方图的应用案例

股票开盘价、收盘价、最高价、最低价直方图可视化展示
在这个案例中,我们使用sns.histplot()方法绘制直方图,用以展示中国平安在2023年3月开盘价、收盘价、最高价、最低价的统计分布情况。
代码如下:

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)

# 筛选2023年3月的行情数据
start_date = '2023-03-01'
end_date = '2023-03-31'
df = df.loc[start_date:end_date]

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

# 绘制开盘价、收盘价、最高价、最低价的分价直方图
# 设置各个子图的标题
titles = ['开盘价', '收盘价', '最高价', '最低价']
# 设置各个子图的数据集
datas = ['open','close','high','low']

# 创建一个2x2的子图布局
fig, ax = plt.subplots(2, 2, figsize=(10, 10))
# 依次创建各个子图
for i in range(4):
    sns.histplot(data=df, x=datas[i], kde=True, label = titles[i], 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.tight_layout()
# 显示图片
plt.show()

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

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

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

相关文章

如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

遇到问题:用npm下载组件时出现Cannot find module ‘D:software\node_modules\npm\bin\npm-cli.js’ 问题,导致下载组件不能完成。 解决方法:下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题&#xff1…

KubeSphere 社区双周报 | Java functions framework 支持 SkyWalking | 2023.8.4-8.17

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.08.04-2023.…

CPU执行程序的三个阶段简单示例(取指,解码,执行)

基础知识 RAM:RAM是随机存取存储器(random access memory),是计算机内部存储器中的一种,也是其中最重要的,计算机和手机中一般把其叫做(运行)内存,它的速度要比硬盘快得多…

JDK8知识点梳理

JDK8知识点梳理 一、lambda表达式1.标准格式2.实现原理3.省略模式4.前提条件 二、函数式接口1.函数式接口:FunctionalInterface2.接口默认方法3.接口静态方法4.供给型接口:Supplier5.消费型接口:Consumer6.消费供给型接口:Functio…

Redis中的分布式锁及其延生的问题

前言 本文将着重介绍Redis中的分布式锁及其与出现的死锁和锁误删问题 什么是分布式锁 首先问题就是什么是分布式锁,分布式锁就是分布式系统中实现并发控制的一种锁机制,它可以保证多个节点在同一个时间只有有一个能成功竞争到系统资源(共享…

[oneAPI] 使用序列到序列网络和注意力进行翻译

[oneAPI] 使用序列到序列网络和注意力进行翻译 oneAPI特殊写法使用序列到序列网络和注意力进行翻译Intel Optimization for PyTorch导入包加载数据并对数据进行处理序列到序列网络和注意力模型与介绍编码器解码器简单解码器注意力解码器 训练过程准备训练数据训练模型可视化注意…

Ubuntu在自己的项目中使用pcl

1、建立一个文件夹,如pcl_demos,里面建立一个.cpp文件和一个cmake文件 2、打开终端并进入该文件夹下,建立一个build文件夹存放编译的结果并进入该文件夹 3、对上一级进行编译 cmake .. 4、生成可执行文件 make 5、运行该可执行文件 6、可视…

STL——stack和queue

一、stack和queue stl中提供了栈和队列配接器供我们使用,以后就可以直接使用了。不需要我们自己造轮子。 使用细节参考文档就可以,与之学过的容器并无二致。栈和队列的特性我们再学习数据结构时已经了解了。这里就不在赘述了。 stack - C Reference (…

FifthOne:计算机视觉提示和技巧

一、说明 欢迎来到我们每周的FiftyOne提示和技巧博客,我们回顾了最近在Slack,GitHub,Stack Overflow和Reddit上弹出的问题和答案。FiftyOne是一个开源机器学习工具集,使数据科学团队能够通过帮助他们策划高质量数据集、评估模型、…

Games 103 作业一

Games 103 作业一 整个作业一的内容其实就是要自己动手实现一遍Impulse和Shape Matching这两个方法。作业中给的示例场景如下: 场景中有个兔子的刚体,我们要模拟的就是给兔子一个初始的速度,让其在重力的影响下,与两堵墙发生碰撞的…

嵌入式开发中的抽象、封装与继承

嵌入式开发中的抽象、封装与继承 ## 1 何从实现? OOP 是 CPP 的显著特征,尽管它是一种多重范式的语言 第一部分谈的是产品的实现(implement)而非产品的设计,因为对于个人开发者而言,往往是知道如何实现产…

港科夜闻|香港科大校长叶玉如教授、香港科大(广州)校长倪明选教授等两校领导共同出席香港科大(广州)首批本科新生见面会...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大校长叶玉如教授、香港科大(广州)校长倪明选教授等两校领导共同出席香港科大(广州)首批本科新生见面会。8月16日,香港科大(广州)首批本科新生参加了一次具有特殊意义的见面会。香港科大、香港科大(广州…

菜单中的类似iOS中开关的样式

背景是我们有需求,做类似ios中开关的按钮。github上有一些开源项目,比如 SwitchButton, 但是这个项目中提供了很多选项,并且实际使用中会出现一些奇怪的问题。 我调整了下代码,把无关的功能都给删了,保留核…

Unsafe Filedownload

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文件名对应的文件response给浏览器&am…

XDR解决方案正式发布

面对日益严峻的网络安全形势,为了增强安全防护能力,不同单位经常不定期举行以真实网络目标为对象的攻防实战演练,旨在发现、暴露和解决安全问题,检验各个企业单位的网络安全防护水平和应急处置能力。 作为攻防实战防守方的蓝队&am…

WebStrom 前端项目Debug

1. 正常启动前端项目 2. 配置webStrom的JavaScript Debugger 点击Edit Configurations添加avaScript Debug填写URL 为项目启动路径配置要Debug的浏览器-remote-allow-origins* (最重要,否则唤起的是一个about:blank空白页面) 3. 启动Debug模…

[ MySQL ] — 基础增删查改的使用

目录 表的增删查改 Create 单行数据 全列插入 多行数据 全列插入 多行数据 指定列插入 不存在插入存在则更新 替换 Retrieve SELECT 列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 WHERE 条件 结果排序 筛选结果分页 Update De…

GPT系列总结

1.GPT1 无监督预训练有监督的子任务finetuning https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf 1.1 Unsupervised pre-training (1)通过一个窗口的输入得到下一个token在目标token上的一个概率分布…

all in one之安装pve(第一章)

第一章 安装PVE PVE安装 pverufusultraISO下载地址下载地址下载地址 因为我使用的是SD卡存储,尝试rufus安装失败,建议使用 ultraISO进行镜像写入。 U盘推荐4G往上。 下载pve 我下载的pve版本是7.4 ultraISO 把镜像写入u盘 下载完成后需要把镜像文件…

小米分享 | 解密面试题:网易面试如何回答“创建线程有哪几种方式?”

大家好,我是你们的小米!今天要和大家一起探讨一个在技术面试中常见的问题:创建线程有哪几种方式?这可是个经典面试题哦!不过别担心,小米在这里为你详细解析,帮你轻松应对,让你在面试…