zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    [IOI2014] 假期
    [SPOJ22343] Norma
    [APC001] D Forest
    [POI2004] SZN
    [JZOJ5837] Omeed
    [JZOJ5836] Sequence
    【题解】[CH弱省胡策R2]TATT
    【题解】简单题
    【题解】巧克力王国
    【题解】[SDOI2010]捉迷藏
  • 原文地址:https://www.cnblogs.com/huanping/p/12148101.html
Copyright © 2011-2022 走看看