Loading

seaborn 热图第一行和最后一行只显示一半

背景问题

最近在用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")

test.png

解决办法

在网上搜索了下,发现stackoverflow有这个问题。
这貌似是 matplotlib 3.1.1的一个bug吧,github上也有相关issue。我查了下我的matplotlib版本还真是3.1.1 。

这里照搬一下那个答案。

  1. 回退到matplotlib 3.1.0
  2. 用matplotlib 3.1.2 或更高的版本
  3. 手动设置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")

test.png

posted @ 2020-01-04 10:16  何物昂  阅读(3594)  评论(0编辑  收藏  举报