Python 海生虫子?热图绘制不一致

Python 海生虫子?热图绘制不一致,python,python-3.x,ipython-notebook,heatmap,seaborn,Python,Python 3.x,Ipython Notebook,Heatmap,Seaborn,此代码: %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, ann

此代码:

%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()
将得到如下结果():

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

也就是说,如果禁用内联打印,注释将消失,只有一个单元格和y标签方向错误。由于这是我所做的唯一更改,我认为这是seaborn的一个bug,它不能产生一致的结果

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

更新,感谢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
import sys
print 'Python: ' + sys.version

import IPython
print 'IPython: ' + IPython.__version__

import matplotlib
print 'Matplotlib: ' + matplotlib.__version__

import seaborn
print 'Seaborn: ' + seaborn.__version__
所以我认为是Python3或Matplotlib:1.5导致了这个问题。我将添加Python3标记,以防万一


感谢

对于我来说,无论我是否使用
%matplotlib inline
,代码都会产生相同的结果,并使其
plt.show()
,未观察到任何错误

检查所有相关内容的版本:

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
import sys
print 'Python: ' + sys.version

import IPython
print 'IPython: ' + IPython.__version__

import matplotlib
print 'Matplotlib: ' + matplotlib.__version__

import seaborn
print 'Seaborn: ' + seaborn.__version__
我的版本供参考:

Python: 2.7.10 |Anaconda 2.4.0 (64-bit)| (default, Oct 21 2015, 19:35:23) [MSC v.1500 64 bit (AMD64)]
IPython: 4.0.0
Matplotlib: 1.4.3
Seaborn: 0.6.0

这个bug实际上已经在Seaborn GitHub页面上报告过。从那里的评论中可以看出,matplotlib在使用
MacOSX
TkAgg
QtAgg
后端时出现问题(在IPython/Jupyter笔记本中使用
%matplotlib笔记本时也是如此)

原则上,将后端更改为其他后端应使绘图按预期工作(如第一幅图所示)。从中,您可以检查正在使用的后端

matplotlib.get_backend()
并将其更改为另一个带有

matplotlib.use()
不幸的是,所有可用的交互式后端似乎都出现了这个问题。如果这正是您所需要的,那么您可能需要等到bug被解决之后(您可以在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")

谢谢你,巴勃罗。我正在使用Windows7,我的交互式后端是
QtAgg
。不幸的是,正如kyleabeauchamp所报道的,“TkAgg和QT4Agg与OSX具有相同的单细胞行为。”也就是说,我也不走运。@xpt是的,你是对的,
MacOSX
不是产生此错误的唯一后端。我还为Linux上的
QtAgg
TkAgg
确认了它。如果您对保存为PNG/PDF感到满意,那么
Agg
后端确实适合我。不幸的是,我不知道您还可以使用其他交互式后端,我们可能要等到seaborn/matplotlib错误解决后才能使用。我会用这些信息更新我的答案。是的,这很有效。谢谢,因为
use(“Agg”)
没有文档,我也找不到。当seaborn/matplotlib错误解决后,我将+1这个和+1&接受下一个,然后您更新您的答案。