Python可视化在量化交易中的应用(16)_Seaborn热力图

news2024/11/15 8:27:57

Seaborn中热力图的绘制方法

seaborn中绘制热力图使用的是sns.heatmap()函数:
sns.heatmap(data,vmin,vmax,cmap,center,robust,annot,fmt=‘.2g’,annot_kws,linewidths=0,linecolor=‘white’,cbar,cbar_kws,cbar_ax,square,xticklabels=‘auto’,yticklabels=‘auto’,mask,ax,**kwargs,)

关键常用参数说明:

data:要绘制热力图的数据集,可以是DataFrame、数组或列表等。
vmin,vmax:设置热力图颜色映射的取值范围,vmin最小值,vmax最大值。
cmap:可选参数,用于指定颜色映射。默认值为"viridis",表示使用viridis颜色映射;可以设置为一个颜色映射名称或颜色映射对象。
center:可选参数,用于指定颜色映射的中心值。默认值为None,表示使用数据的中心值;可以设置为一个数值,表示中心值。
robust:可选参数,用于指定是否使用鲁棒性的颜色映射。默认值为False,表示不使用鲁棒性;可以设置为True,表示使用鲁棒性。
annot:可选参数,用于在每个单元格中显示数值。默认值为False,表示不显示数值;可以设置为True,表示显示数值;可以设置为一个布尔数组或与data形状相同的数组,用于指定要显示的数值。
fmt:可选参数,用于指定数值的格式。默认值为".2g",表示使用科学计数法;可以设置为其他格式字符串,例如"%d"表示整数,“%.2f"表示保留两位小数。
annot_kws:可选参数,用于传递给annot参数的其他参数,例如字体大小、颜色等。
linewidths:可选参数,用于指定每个单元格之间的边框线宽度。默认值为0,表示不显示边框线;可以设置为一个浮点数,表示边框线的宽度。
linecolor:可选参数,用于指定每个单元格之间的边框线颜色。默认值为"white”,表示白色;可以设置为一个颜色名称或颜色代码。
cbar:可选参数,用于指定是否显示颜色条。默认值为True,表示显示颜色条;可以设置为False,表示不显示颜色条。
cbar_kws:可选参数,用于传递给颜色条的其他参数,例如颜色条的标签、方向等。
square:可选参数,用于指定是否将每个单元格绘制为正方形。默认值为False,表示不绘制正方形;可以设置为True,表示绘制正方形。
xticklabels、yticklabels:可选参数,用于指定x轴和y轴的标签。默认值为"auto",表示自动绘制标签;可以设置为一个标签列表或布尔数组,用于指定要显示的标签。
ax:可选参数,用于指定绘制热力图的坐标轴对象。默认值为None,表示使用当前坐标轴。
**kwargs:用于传递其他绘图参数,例如图像的标题、标签、颜色等。

案例说明

【例5.18】使用seaborn绘制银行板块股票和IT设备制造板块股票交易额热力图
代码如下:

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-01-03'
end_date = '2023-03-31'
df = df.loc[start_date:end_date]

# 创建股票池列表-深圳交易所银行类版块股票池,共9支
stock_list1 = ['000001.SZ','001227.SZ','002142.SZ','002807.SZ','002839.SZ',
               '002936.SZ','002948.SZ','002958.SZ','002966.SZ']
# 创建股票池列表-深圳交易所IT设备制造类版块股票池,共9支
stock_list2 = ['000066.SZ','000977.SZ','002180.SZ','002197.SZ','002236.SZ',
               '002351.SZ','002415.SZ','002528.SZ','002866.SZ']

# 从DataFrame中将股票池中的交易数据筛选出来
stock_1 = df[df['ts_code'].isin(stock_list1)]
stock_2 = df[df['ts_code'].isin(stock_list2)]

# 相比交易量,交易额更能反映出某个版块当前的交易热度
# 按周统计银行类版块的每只股票每周的交易额
stock1_amout_weekly = []
for i in range(len(stock_list1)):
    df_temp = stock_1[stock_1['ts_code']==stock_list1[i]]
    temp_a = df_temp.resample('W').sum()
    temp_b = temp_a['amount'].to_list()
    stock1_amout_weekly.append(temp_b)
# 同理,按周统计IT设备制造类版块的每只股票每周的交易额
stock2_amout_weekly = []
for i in range(len(stock_list2)):
    df_temp = stock_2[stock_2['ts_code']==stock_list2[i]]
    temp_a = df_temp.resample('W').sum()
    temp_b = temp_a['amount'].to_list()
    stock2_amout_weekly.append(temp_b)

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

# 绘制银行类版块股票的热力图
im1 = sns.heatmap(stock1_amout_weekly, ax = ax[0])
# 设置图表标题和标签
ax[0].set_title('Stock of Banks Trading Amount Heatmap')
# 横坐标设置为周数,纵坐标为各银行
ax[0].set_xlabel("Weeks")
ax[0].set_ylabel("Banks")

# 同理,绘制IT设备制造类版块股票的热力图,并设置标题、横纵坐标。

im2 = sns.heatmap(stock2_amout_weekly, ax = ax[1])
ax[1].set_title('Stock  of IT-Vehicles Trading Amount Heatmap')
ax[1].set_xlabel("Weeks")
ax[1].set_ylabel("Banks")

# 显示图表
plt.show()

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

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

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

相关文章

systemd:初学者如何理解其中的争议

导读对于什么是 systemd,以及为什么它经常成为 Linux 世界争议的焦点,你可能仍然感到困惑。我将尝试用简单的语言来回答。 在 Linux 世界中,很少有争议能像传统的 System V 初始化 系统(通常称为 SysVinit)和较新的 s…

QT设置widget背景图片

首先说方法,在给widget或者frame或者其他任何类型的控件添加背景图时,在样式表中加入如下代码,指定某个控件,设置其背景。 类名 # 控件名 { 填充方式:图片路径 } 例如: QWidget#Widget {border-image: url…

1. 微信小程序开发环境搭建

下载 微信的小程序开发需要使用到微信开发者工具,通过https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html可以下载 下载完成后 安装

Linux 系统编程拾遗

Linux 系统编程拾遗 进程的创建 进程的创建 fork()、exit()、wait()以及execve()的简介 创建新进程:fork()

人工智能原理(6)

目录 一、机器学习概述 1、学习和机器学习 2、学习系统 3、机器学习发展简史 4、机器学习分类 二、归纳学习 1、归纳学习的基本概念 2、变型空间学习 3、归纳偏置 三、决策树 1、决策树组成 2、决策树的构造算法CLS 3、ID3 4、决策树的偏置 四、基于实例的学习…

嵌入式系统总线-片内总线

1.总线概述 总线是CPU与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道。 2.总线参数 总线宽度:又称总线位宽,指的是总线能同时传送数据的位数。如16位总线就是具有16位数据传送能力。 总线频率&#xff…

apex安装出错:TypeError unsupported operand type(s) for +: “NoneType“ and “str“

Windows 10 环境下安装apex报错:TypeError unsupported operand type(s) for : “NoneType“ and “str“ 1、首先apex不能直接pip install apex安装。 2、具体安装步骤:【python】【深度学习】apex的安装_apex python_愿东大没有食堂的博客-CSDN博客 …

深入竞品:解读竞品分析的艺术与策略

引言:为何竞品分析至关重要? 在当今的产品环境中,市场变得越来越拥挤。每个角落都有新的创业公司试图创造下一个行业的颠覆者,同时也有成熟的巨头在不断地迭代和优化他们的产品。在这样的环境中,不了解您的竞争对手是…

『C语言初阶』第八章 -结构体

前言 今天小羊又来给铁汁们分享关于C语言的结构体,在C语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类型),今天我们主要简单了解一下结构体。 一、结构体是什么&#x…

Linux Mint 21.3 计划于 2023 年圣诞节发布

Linux Mint 项目近日公布了基于 Ubuntu 的 Linux Mint 发行版下一个重要版本的一些初步细节,以及备受期待的基于 Debian 的 LMDE 6(Linux Mint Debian Edition)版本。 近日,Linux Mint 项目负责人克莱门特-勒菲弗(Clem…

ECA模块详解

注意:本文代码为自己理解之后实现,与原论文代码原理相同但并不完全一样,主要是输入张量的形状不同,若更想了解原文代码,可以访问:https://blog.csdn.net/weixin_45084253/article/details/124282580 &#…

使用RDP可视化远程桌面连接Linux系统

使用RDP可视化远程桌面连接Linux系统 远程桌面连接Linux安装安装包准备服务器安装xrdp远程连接 远程桌面连接Linux 通常使用SSH来连接服务器,进行命令行操作,但是这次需要远程调试生产环境的内网服务器,进行浏览器访问内网网站,至…

SQL助你面大厂(行列转换)

在面试中,不仅有算法题,还有这个老大难的SQL编写 SQL在面试中也是会经常会被问到,不仅仅是为了面试,在做项目的时候,往往用的最多的就是CRUD,这也提高不了我们的编写SQL的能力,所以最近我准备总结几个面试模板,以及一些…

webshell实践,在nginx上实现负载均衡

1、配置多台虚拟机,用作服务器 在不同的虚拟机上安装httpd服务 我采用了三台虚拟机进行服务器设置:192.168.240.11、192.168.240.12、192.168.240.13 [rootnode0-8 /]# yum install httpd -y #使用yum安装httpd服务#开启httpd服务 [rootnode0-8 /]# …

开发一个文生图的功能

文章目录 效果开发环境原理核心代码代码仓库问题效果 开发环境 Python 3.10PyCharm原理 借助开源项目stable-diffusion,通过该项目封装python库diffusers,可以轻易的实现文生图的功能。 关于更多diffusers的功能请访问:https://huggingface.co/docs/diffusers/index 核心代…

Linux命令200例:nc非常有用的网络工具(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…

LeetCode128.最长连续序列

我这个方法有点投机取巧了,题目说时间复杂度最多O(n),而我调用了Arrays.sort()方法,他的时间复杂度是n*log(n),但是AC了,这样的话这道题还是非常简单的,创建一个Hashmap,以nums数组的元素作为ke…

回归预测 | MATLAB实现GWO-SVM灰狼优化算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GWO-SVM灰狼优化算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GWO-SVM灰狼优化算法优化支持向量机多输入单输出回归预测(多指标,多图)效果一览基…

Java源码分析(一)Integer

当你掌握Java语言到了一定的阶段,或者说已经对Java的常用类和API都使用的行云流水。你会不会有一些思考?比如,这个类是如何设计的?这个方法是怎么实现的?接下来的一系列文章,我们一起学习下Java的一些常见类…