一文总结Python绘制的10种热力图

共 3103字,需浏览 7分钟

 ·

2024-05-01 07:53

你好,我是郭震

首先祝你五一快乐!

今天这篇汇总,Python绘制热力图,重点聚焦在不同样式的热力图上。

使用seaborn库,它是一个基于Matplotlib的数据可视化库,它提供了一种高级接口来绘制吸引人的统计图形。

数据准备阶段,代码如下,设置随机种子,确保每次运行数据一致。

# 设置随机种子
np.random.seed(42)
data = np.random.rand(10, 12)

1 coolwarm样式

annot=True:不显示每个单元格的数据值

# 创建热力图
plt.figure(figsize=(10, 8))
sns.heatmap(data, annot=False, cmap='coolwarm')
plt.title('Seaborn Heatmap Example')
plt.show()

热力图如下:

2 viridis样式

其他代码与1相同,仅有一个cmap参数调整:

sns.heatmap(data, annot=False, cmap='viridis')

热力图如下:

3 plasma样式

其他代码与1相同,仅有一个cmap参数调整:

sns.heatmap(data, annot=False, cmap='plasma')

4 spring样式

sns.heatmap(data, annot=False, cmap='spring')

5 winter样式

sns.heatmap(data, annot=False, cmap='winter')

6 自定义颜色样式

# 创建自定义颜色映射
colors = ["blue""green""red"]
cmap = LinearSegmentedColormap.from_list("mycmap", colors)

# 数据
np.random.seed(42)
data = np.random.rand(10, 12)

# 绘制热力图
plt.figure(figsize=(8, 6))
sns.heatmap(data, cmap=cmap, annot=False)
plt.title('Custom Colormap Heatmap')
plt.show()

7 添加注解

只需改变下面一行代码:

sns.heatmap(data, cmap=cmap, annot=True)

8 掩码显示

只显示大于0.7的颜色块:

# 创建一个掩码,只显示大于0.7的值
mask = data < 0.7

plt.figure(figsize=(8, 6))
sns.heatmap(data, mask=mask, cmap='viridis', annot=False)
plt.title('Masked Heatmap for Values > 0.7')
plt.show()

9 小于某值显示特定颜色

# 'lightgrey'用于小于0.7的值,'viridis'用于大于等于0.7的值
colors = ["lightgrey"] + sns.color_palette("viridis", as_cmap=True)(np.linspace(0, 1, 256)).tolist()
cmap = LinearSegmentedColormap.from_list("custom_cmap", colors)
norm = plt.Normalize(0.7, 1)

10 多热力图

# 定义颜色映射
norm = plt.Normalize(0.7, 1)
# 创建图和子图网格
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(12, 10))
# 绘制热力图
sns.heatmap(data1, cmap='coolwarm', norm=norm, annot=False, ax=axs[0, 0], cbar=False)
sns.heatmap(data2, cmap='viridis', norm=norm, annot=False, ax=axs[0, 1], cbar=False)
sns.heatmap(data3, cmap='plasma', norm=norm, annot=False, ax=axs[1, 0], cbar=False)
sns.heatmap(data4, cmap='spring', norm=norm, annot=False, ax=axs[1, 1], cbar=False)
# 设置每个子图的标题
axs[0, 0].set_title('Heatmap 1')
axs[0, 1].set_title('Heatmap 2')
axs[1, 0].set_title('Heatmap 3')
axs[1, 1].set_title('Heatmap 4')
# 调整布局
plt.tight_layout()
plt.show()

以上,希望对你有帮助。



1 点击文末我的头像,进入我的公众号主页,点击发消息,然后回复:GPT,免费获取《ChatGPT提问指南》.PDF教程,免费获取。
2 发送 llm,免费获取《大模型从理论到实践》.PDF
3 我打造的Python人工智能全栈课(超700节视频课)已上线,长按二维码查看,咨询或报名请加我微信:gz113097485

浏览 99
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报