Python matplotlib/seaborn:热图图一半中的第一行和最后一行
当使用seaborn绘制热图(以及使用matplotlib绘制相关矩阵)时,第一行和最后一行被切成两半。 当我运行我在网上找到的这个最小代码示例时,也会发生这种情况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
将熊猫作为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.0
- 使用matplotlib 3.1.2或更高版本
- 手动设置热图限制(
)ax.set_ylim(底部,顶部)#将ylim设置为底部,顶部
不幸的是,matplotlib 3.1.1;一般来说,带有固定刻度的反向轴。
这在当前的开发版本中是固定的;因此,你可以
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到大小+