背景问题
最近在用 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")
解决办法
在网上搜索了下, 发现有这个问题.
这貌似是 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")
- ```
来源: http://www.bubuko.com/infodetail-3364818.html