ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Python | 如何在Matplotlib中仅绘制热图的上/下三角形
[打印本页]
作者:
何小豆儿在此
时间:
2024-12-30 13:21
标题:
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 pd
df = 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绘制热图,您可以轻松实现此结果。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4