gpt4 book ai didi

python - Seaborn 错误?热图绘制不一致

转载 作者:太空狗 更新时间:2023-10-29 21:08:22 29 4
gpt4 key购买 nike

这段代码:

%matplotlib inline

#import numpy as np; np.random.seed(0)
import matplotlib.pyplot as plt
import seaborn as sns #; sns.set()

flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")

sns.heatmap(flights, annot=True, linewidths=.2, fmt="d")

#plt.show()

将得到类似于 the official result 的结果( See/verify it here ):

enter image description here

但是,如果我禁用内联绘图并启用 plt.show(),结果将如下所示:

Annotated heatmaps?

即,如果禁用内联绘图,注释将消失,除了一个单元格和 y 标签方向错误。由于这是我所做的唯一更改,我认为这是 seaborn 的错误,它无法产生一致的结果。

谁能确认一下?
请问有什么可能的解决方法吗?

更新,感谢 Sergey 的反馈,以下是我对所有相关内容的版本:

Python: 3.5.0 |Anaconda 2.4.0 (64-bit)| (default, Dec  1 2015, 11:46:22) [MSC v.1900 64 bit (AMD64)]
IPython: 4.0.0
Matplotlib: 1.5.0
Seaborn: 0.6.0

所以我认为是 Python3 或 Matplotlib: 1.5 导致了问题。我将添加 Python3 标签,以防万一。

谢谢

最佳答案

这个错误实际上已经在 Seaborn GitHub 页面中报告了 here .从那里的评论来看,问题出现在 matplotlib 使用 MacOSXTkAggQtAgg 后端时(也在使用 %matplotlib 笔记本时 在 IPython/Jupyter 笔记本中)。

原则上,将后端更改为不同的后端应该可以使绘图按预期工作(如第一个图中所示)。来自 matplotlib's documentation , 你可以检查你使用的是什么后端

matplotlib.get_backend()

并用

将其更改为不同的
matplotlib.use()

不幸的是,这个问题似乎出现在所有可用的交互式后端中。如果那是您所需要的,您可能必须等到错误被解决(您可以在 GitHub 页面上跟踪任何进展)。

如果您乐于为绘图生成 PNG/PDF 文件而不是交互式窗口,则 Agg 后端应该可以正常工作,只需稍微更改您的代码:

import matplotlib
matplotlib.use("Agg")

import matplotlib.pyplot as plt
import seaborn as sns #; sns.set()

flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")

sns.heatmap(flights, annot=True, linewidths=.2, fmt="d")

plt.savefig("heatmap.png")

关于python - Seaborn 错误?热图绘制不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34375363/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com