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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM