Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib/seaborn:热图图一半中的第一行和最后一行_Python_Matplotlib_Seaborn - Fatal编程技术网

Python matplotlib/seaborn:热图图一半中的第一行和最后一行

Python matplotlib/seaborn:热图图一半中的第一行和最后一行,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,当使用seaborn绘制热图(以及使用matplotlib绘制相关矩阵)时,第一行和最后一行被切成两半。 当我运行我在网上找到的这个最小代码示例时,也会发生这种情况 将熊猫作为pd导入 导入seaborn作为sns 将matplotlib.pyplot作为plt导入 数据=pd.read\u csv('https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearDa

当使用seaborn绘制热图(以及使用matplotlib绘制相关矩阵)时,第一行和最后一行被切成两半。 当我运行我在网上找到的这个最小代码示例时,也会发生这种情况

将熊猫作为pd导入
导入seaborn作为sns
将matplotlib.pyplot作为plt导入
数据=pd.read\u csv('https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv')
plt.图(figsize=(10,5))
sns.heatmap(data.corr())
plt.show()
y轴上的标签位于正确的位置,但行不完全在那里

几天前,它按预期工作。从那时起,我安装了texlive xetex,所以我再次删除了它,但它并没有解决我的问题


你知道我可能遗漏了什么吗?

不幸的是matplotlib 3.1.1;一般来说,带有固定刻度的反向轴。
这在当前的开发版本中是固定的;因此,你可以

  • 恢复到matplotlib 3.1.0
  • 使用matplotlib 3.1.2或更高版本
  • 手动设置热图限制(
    ax.set_ylim(底部,顶部)#将ylim设置为底部,顶部

  • 不幸的是,matplotlib 3.1.1;一般来说,带有固定刻度的反向轴。
    这在当前的开发版本中是固定的;因此,你可以

    • 恢复到matplotlib 3.1.0
    • 使用matplotlib 3.1.2或更高版本
    • 手动设置热图限制(
      ax.set_ylim(底部,顶部)#将ylim设置为底部,顶部

    使用上述方法和手动设置热图限制进行修复

    首先

    使用检查当前轴

    ax.get_ylim()
    (5.5, 0.5)
    
    固定

    ax.set_ylim(6.0, 0)
    

    固定使用上述和设置热图限制手动

    首先

    使用检查当前轴

    ax.get_ylim()
    (5.5, 0.5)
    
    固定

    ax.set_ylim(6.0, 0)
    

    在3.1.0和3.1.1之间的matplotlib回归中有一个bug 您可以通过以下方式更正此问题:

    import seaborn as sns
    df_corr = someDataFrame.corr()
    ax = sns.heatmap(df_corr, annot=True) #notation: "annot" not "annote"
    bottom, top = ax.get_ylim()
    ax.set_ylim(bottom + 0.5, top - 0.5)
    

    在3.1.0和3.1.1之间的matplotlib回归中有一个bug 您可以通过以下方式更正此问题:

    import seaborn as sns
    df_corr = someDataFrame.corr()
    ax = sns.heatmap(df_corr, annot=True) #notation: "annot" not "annote"
    bottom, top = ax.get_ylim()
    ax.set_ylim(bottom + 0.5, top - 0.5)
    

    这发生在matplotlib版本3.1.1中,正如

    下面解决了我的问题


    pip安装matplotlib==3.1.0

    按照

    下面解决了我的问题

    pip安装matplotlib==3.1.0

    matplotlib 3.1.2已退出- 它可以通过conda forge在Anaconda云中获得,但我无法通过conda install安装它。 手动替代方案有效: 从github下载matplotlib 3.1.2并通过pip安装

     % curl https://codeload.github.com/matplotlib/matplotlib/tar.gz/v3.1.2 --output matplotlib-3.1.2.tar.gz
     % pip install matplotlib-3.1.2.tar.gz
    
    matplotlib 3.1.2不适用于- 它可以通过conda forge在Anaconda云中获得,但我无法通过conda install安装它。 手动替代方案有效: 从github下载matplotlib 3.1.2并通过pip安装

     % curl https://codeload.github.com/matplotlib/matplotlib/tar.gz/v3.1.2 --output matplotlib-3.1.2.tar.gz
     % pip install matplotlib-3.1.2.tar.gz
    

    rustyDev对conda forge的看法是正确的,但我不需要从github下载进行手动pip安装。对我来说,在Windows上,它直接起作用。情节也很好

    可选点,答案不需要:

    之后,我尝试了其他步骤,但它们不是必需的:在conda提示符中:conda search matplotlib--info显示没有新版本信息,最新的信息是3.1.1。因此,我使用
    pip install matplotlib==3.1.2
    尝试了pip,但pip说“需求已经满足”

    然后根据medium.com/@rakshithvasudev/..
    python-import-matplotlib-matplotlib获取版本。\uuu version\uuu
    显示3.1.2已成功安装


    顺便说一句,我在将Spyder更新到v4.0.0后直接遇到了这个错误。错误出现在混乱矩阵图中。几个月前已经提到了这一点。stackoverflow.com/questions/57225 685/…已经链接到这个seaborn问题。

    rustyDev关于conda forge的说法是正确的,但我不需要从github下载进行手动pip安装。对我来说,在Windows上,它直接起作用。情节也很好

    可选点,答案不需要:

    之后,我尝试了其他步骤,但它们不是必需的:在conda提示符中:conda search matplotlib--info显示没有新版本信息,最新的信息是3.1.1。因此,我使用
    pip install matplotlib==3.1.2
    尝试了pip,但pip说“需求已经满足”

    然后根据medium.com/@rakshithvasudev/..
    python-import-matplotlib-matplotlib获取版本。\uuu version\uuu
    显示3.1.2已成功安装


    顺便说一句,我在将Spyder更新到v4.0.0后直接遇到了这个错误。错误出现在混乱矩阵图中。几个月前已经提到了这一点。stackoverflow.com/questions/57225 685/…已经链接到这个seaborn问题。

    我通过在代码中添加这一行来解决它,使用
    matplotlib==3.1.1

    ax.set\u ylim(已排序(ax.get\u xlim(),reverse=True))


    注意。之所以能这样做,唯一的原因是x轴没有改变,所以在将来的mpl版本中使用时,您自己承担风险。

    我通过在代码中添加这一行解决了这个问题,使用
    matplotlib==3.1.1

    ax.set\u ylim(已排序(ax.get\u xlim(),reverse=True))

    注意。这项工作的唯一原因是x轴没有改变,因此在将来的mpl版本中使用时,请自行承担风险

    对我有效:

    b, t = plt.ylim()
    b += 0.5
    t -= 0.5
    custom_ylim = (b, t)
    plt.setp(axes, ylim=custom_ylim)
    
    为我工作:

    b, t = plt.ylim()
    b += 0.5
    t -= 0.5
    custom_ylim = (b, t)
    plt.setp(axes, ylim=custom_ylim)
    

    降级您的matplotlib

    !pip install matplotlib==3.1.0
    
    并将此行添加到绘图代码中:

    ax[i].set_ylim(sorted(ax[i].get_xlim(), reverse=True))
     
    

    降级您的matplotlib

    !pip install matplotlib==3.1.0
    
    并将此行添加到绘图代码中:

    ax[i].set_ylim(sorted(ax[i].get_xlim(), reverse=True))
     
    

    正如@ImportanceOfBeingErnest所提到的,此问题是由于matplotlib特定版本中的seaborn热图损坏造成的,因此解决此问题的简单方法是升级matplotlib,如下所示:

    pip install --upgrade matplotlib
    

    正如@ImportanceOfBeingErnest所提到的,此问题是由于matplotlib特定版本中的seaborn热图损坏造成的,因此解决此问题的简单方法是升级matplotlib,如下所示:

    pip install --upgrade matplotlib
    

    你能提供实际数据吗?它看起来很小。一般来说,我们的像素边界是-0.5到大小+