当前位置: 首页 > news >正文

Python | 如何在Matplotlib中仅绘制热图的上/下三角形

热图是一种强大的可视化工具,用于以矩阵格式表示数据,其中各个值由颜色表示。它们对于可视化相关矩阵特别有用,其中矩阵的对称性质使得显示上下三角形变得多余。本文将指导您使用Matplotlib(Python中流行的绘图库)仅绘制热图的上三角形或下三角形的过程。

为什么只绘制上三角形或下三角形?

热图是数据的图形表示,其中各个值由颜色表示。在许多情况下,例如相关矩阵,数据是关于对角线对称的。这意味着上三角形中的信息是下三角形中信息的镜像。如果同时删除两个三角形,则可能是多余的,并且会使可视化变得混乱。通过只绘制一个三角形,我们可以使热图更清晰,更容易解释。

分步实现绘制

要在Matplotlib中只绘制热图的上三角形或下三角形,我们可以使用NumPy创建一个数组,然后使用Matplotlib的imshow函数显示它。以下是详细步骤:

1.导入所需的库

首先,我们需要导入必要的库:NumPy用于数值运算,Matplotlib用于绘图。

import numpy as np
import matplotlib.pyplot as plt

2.生成随机数据

为了演示的目的,我们将创建一个随机的5×5矩阵。在现实世界的场景中,这可以是相关矩阵或任何其他数据矩阵。

data = np.random.rand(5, 5)

3.为上/下三角形创建掩码

我们可以使用numpy.tri函数来创建一个三角形掩码。此函数生成一个下三角矩阵,对角线下方为1,其他地方为0。为了创建上三角形掩码,我们可以转置下三角形掩码。

# Lower triangle mask
lower_mask = np.tri(data.shape[0], data.shape[1], k=-1)# Upper triangle mask
upper_mask = lower_mask.T

4.将掩码应用于数据

我们使用NumPy的掩码数组功能将掩码应用于我们的数据。这将隐藏上三角形或下三角形中的值。

# Mask the lower triangle
masked_data_lower = np.ma.array(data, mask=lower_mask)# Mask the upper triangle
masked_data_upper = np.ma.array(data, mask=upper_mask)

5.绘制热图

最后,我们使用Matplotlib的imshow函数绘制屏蔽数据。我们可以根据需要自定义色彩映射表和其他绘图设置。

plt.figure(figsize=(8, 6))# Plot lower triangle heatmap
plt.subplot(1, 2, 1)
plt.title("Lower Triangle Heatmap")
plt.imshow(masked_data_lower, interpolation='nearest', cmap='viridis')
plt.colorbar()# Plot upper triangle heatmap
plt.subplot(1, 2, 2)
plt.title("Upper Triangle Heatmap")
plt.imshow(masked_data_upper, interpolation='nearest', cmap='viridis')
plt.colorbar()plt.tight_layout()
plt.show()

在这里插入图片描述

仅绘制热图的上三角形:实际示例

1.示例:绘制相关矩阵

让我们考虑一个实际的例子,我们绘制数据集的相关矩阵。我们将使用Pandas库加载数据集并计算相关矩阵。

import pandas as pddf = pd.DataFrame({'A': np.random.rand(10),'B': np.random.rand(10),'C': np.random.rand(10),'D': np.random.rand(10),'E': np.random.rand(10)
})# Calculate correlation matrix
corr_matrix = df.corr()# Create upper triangle mask
mask = np.triu(np.ones_like(corr_matrix, dtype=bool))# Apply mask to the correlation matrix
masked_corr = np.ma.array(corr_matrix, mask=mask)plt.figure(figsize=(8, 6))
plt.title("Upper Triangle Correlation Matrix")
plt.imshow(masked_corr, interpolation='nearest', cmap='coolwarm', vmin=-1, vmax=1)
plt.colorbar()
plt.xticks(range(len(corr_matrix.columns)), corr_matrix.columns, rotation=90)
plt.yticks(range(len(corr_matrix.columns)), corr_matrix.columns)
plt.show()

在这里插入图片描述
2.示例:使用Seaborn绘制上三角热图

import seaborn as sns# Generate a mask for the upper triangle
mask = np.triu(np.ones_like(corr_matrix, dtype=bool))
plt.figure(figsize=(10, 8))# Draw the heatmap with the mask and correct aspect ratio
sns.heatmap(corr_matrix, mask=mask, cmap='coolwarm', vmax=1, vmin=-1, center=0,square=True, linewidths=.5, cbar_kws={"shrink": .5})plt.title("Upper Triangle Correlation Matrix")
plt.show()

在这里插入图片描述

总结

仅绘制热图的上三角形或下三角形可以使您的可视化更清晰,更易于解释,特别是在处理相关矩阵等对称矩阵时。通过使用NumPy创建掩码,使用Matplotlib或Seaborn绘制热图,您可以轻松实现此效果。

http://www.lryc.cn/news/511899.html

相关文章:

  • Leetcode经典题20--长度最小的子数组
  • 【计算机视觉】超简单!维纳滤波的经典案例
  • 【closerAI ComfyUI】快速洗图!高效快速的提示词反推节点——cliption,让洗图出图快人一步不爆显存!
  • AE Dressler CESAR 1312 Generator Model User Manual
  • 【513. 找树左下角的值 中等】
  • 网络通信的瑞士军刀:Python socket库全解析
  • 【笔记️】魔爪 Mini mx 使用快捷键
  • 去除 el-input 输入框的边框(element-ui@2.15.13)
  • Vue中的一些用法
  • 异步爬虫之协程的基本原理
  • Diffusion Transformer(DiT)——将扩散过程中的U-Net换成ViT:近频繁用于视频生成与机器人动作预测(含清华PAD详解)
  • CPT203 Software Engineering 软件工程 Pt.2 敏捷方法和需求工程(中英双语)
  • 【Git】-- 在本地执行 git fetch 发生异常
  • Apache Doris 创始人:何为“现代化”的数据仓库?
  • 高校网络安全存在的问题与对策研究
  • Redis的数据类型,线程,持久化机制
  • 什么是ondelete cascade以及使用sqlite演示ondelete cascade使用案例
  • Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解
  • 数据的简单处理——pandas模块——选择数据
  • 淘宝/天猫购物车商品列表API:深度解析与应用实践
  • 位置式PID-控制步进电机-位置环-stm32
  • 关于Qt::BlockingQueuedConnection的死锁问题
  • Excel for Finance 07 `FV PV` 函数
  • 驱动开发系列31 - Linux Graphics 调试 mesa 的 glDrawArrays (三)
  • 【探花交友】day03—MongoDB基础
  • 【Vue教程】使用Vite快速搭建前端工程化项目 | Vue3 | Vite | Node.js
  • 手机租赁平台开发全攻略打造高效便捷的租赁服务系统
  • 自由学习记录(31)
  • 【探花交友】用户登录总结
  • LabVIEW声波谐振管自动化测量系统