此代码:
%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的一个错误,它不能产生一致的结果。
有人能确认一下吗?
请问有可能的解决办法吗?
感谢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标记,以防万一。
谢谢
发布于 2016-01-08 11:31:44
实际上,此bug已在Seaborn页面这里中报告。从注释中可以看出,matplotlib使用MacOSX、TkAgg或QtAgg后端时出现了问题(在IPython/木星笔记本中使用%matplotlib notebook也是如此)。
原则上,将后端更改为不同的后端会使情节按预期工作(如您的第一个图所示)。在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")发布于 2016-01-04 08:41:33
对于我来说,代码产生的结果与我是否使用%matplotlib inline并使其成为plt.show()无关,没有发现bug。
检查所有相关内容的版本:
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.0https://stackoverflow.com/questions/34375363
复制相似问题