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

  • 相关阅读:
    【最强】微软Tech Summit 2017动手实验室教程
    【心得体会】我考完MOS我明白了…
    惊喜哈哈哈
    89C51单片机的学习
    cookie和session
    Ajax
    ORM创建多表以及多表的增删改查
    orm单表查询和模糊查询
    django的ORM
    django的视图函数
  • 原文地址:https://www.cnblogs.com/huanping/p/12148101.html
Copyright © 2011-2022 走看看