- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这段代码:
%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 ):
但是,如果我禁用内联绘图并启用 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 标签,以防万一。
谢谢
最佳答案
这个错误实际上已经在 Seaborn GitHub 页面中报告了 here .从那里的评论来看,问题出现在 matplotlib 使用 MacOSX
、TkAgg
或 QtAgg
后端时(也在使用 %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/
我想要类似于以下伪代码的东西: while input is not None and timer = 5: print "took too long" else: print inp
如何将 MainEngine Observable 转换为 Cold?来自这个例子: public IObservable MainEngine { get
自从手表被发明以来,表盘的方圆之争就始终没有停下来过,在漫长的岁月中,无论是方形还是圆形表盘,人们都为其寻找到足够多的设计元素,让其肆意成长,这种生机与活力后来也延续到了智能手表上,在2014年,这
我正在学习 CUDA,试图解决一些标准问题。例如,我正在使用以下代码求解二维扩散方程。但我的结果与标准结果不同,我无法弄清楚。 //kernel definition __global__ void
我的 Web 应用程序使用 native dll 来实现其部分功能(其位置在 PATH 中提供)。一切正常,直到我对 WAR 进行更改并且 JBoss 热部署此 WAR。此时dll已经找不到了,需要手
我看到这个问题here 。这是关于实现每个发出的项目的延迟。这是根据accepted answer如何实现的: Observable.zip(Observable.range(1, 5) .g
我最近一直在进行冷迁移...这意味着我无法在进行迁移时从应用程序级别读取/写入数据库(维护页面)。 这样就不会因为更改结构而发生错误,而且如果负载很大,我也不希望 mysql 在迁移过程中崩溃。 我的
我是一名优秀的程序员,十分优秀!