python热图怎么截取对角线的一半_seaborn 热图第一行和最后一行只显示一半

这篇博客讲述了作者在使用seaborn做热图时遇到的问题,即热图首尾行显示不全,经排查发现是matplotlib 3.1.1的bug。博主提供了三种解决方案:升级到3.1.2以上版本,手动设置heatmap limits,以及回退到matplotlib 3.1.0。
摘要由CSDN通过智能技术生成

背景问题

最近在用seaborn 做热图时,做完热图后发现显示不全,热图的第一行和最后一行都只显示了一半。

因为自己做的热图加了许多参数设置,以为是哪个参数设置有问题,遂直接使用seaborn官网的代码。不过还是显示不全。

import numpy as np; np.random.seed(0)

import matplotlib.pyplot as plt

import seaborn as sns; sns.set()

uniform_data = np.random.rand(10, 12)

ax = sns.heatmap(uniform_data)

plt.savefig("test.png")

解决办法

在网上搜索了下,发现stackoverflow有这个问题。

这貌似是 matplotlib 3.1.1的一个bug吧,github上也有相关issue。我查了下我的matplotlib版本还真是3.1.1 。

这里照搬一下那个答案。

回退到matplotlib 3.1.0

用matplotlib 3.1.2 或更高的版本

手动设置heatmap limits (ax.set_ylim(...))

这里我用第三种方法测试,可以解决该问题:

import numpy as np; np.random.seed(0)

import matplotlib.pyplot as plt

import seaborn as sns; sns.set()

uniform_data = np.random.rand(10, 12)

ax = sns.heatmap(uniform_data)

ax.set_ylim([10, 0])

plt.savefig("test.png")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值