seaborn-热图-31,000方阵sns.heatmap模具

时间:2018-11-24 15:51:31

标签: python-3.x jupyter-notebook seaborn heatmap

问题

季节性热图以jupyter notebookpython脚本形式消失。

文献评论

seaborn failing,是我找到的与类似问题最接近的一个,但这不是完全相同的问题。我的只是一个独立的seaborn,不会打印出热图问题。

症状

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

M=np.ones((32000,32000))

ax = sns.heatmap(M)
plt.show()

使用上面的代码,我在jupyter笔记本中收到一条kernel stopped running消息,并在等待20分钟以获取热图后在我的终端中收到一条[1]+ Killed: 9 python bible_ai_construction.py

总体目标

我希望能够调查数据集中每个州与其他州之间的关系。我提供了每个州,以及与之相关的所有其他州的清单,下面是一个小例子:

d={'a':['b','c','e'],'b':['a','c'],'c':['a'],'d':['a','e','b'],'e':['a','c']}
#set the new dictionary to one_hot_encoding representation
d={'a':[0,1,1,0,1],'b':[1,0,1,0,0],'c':[1,0,0,0,0],'d':[1,1,0,0,1],'e':[1,0,1,0,0]}
#construct matrix
M=np.matrix(list(map(lambda x:x, d.values())))
#apply M to seaborn heatmap, i.e., M.shape->(32000,32000)

2 个答案:

答案 0 :(得分:1)

尺寸为32000x32000的矩阵将包含超过十亿个元素。 在我的计算机上,该numpy阵列的内存增长到超过8Gb。

Seaborn / Matplotlib将无法绘制如此庞大的数组。

您应该对矩阵,合并等执行一些聚合方法。

简单地绘制如此大的数组将没有优势,没有人能够从如此详细的图表中推断出任何信息。

答案 1 :(得分:0)

我认为您应该以某种亚采样/汇总形式预览大数据 然后通过鼠标交互与较大的 图片。您可以使用https://github.com/AaronWatters/jp_doodle来实现此目的,实际上,我在笔记本中的最终示例中实现了类似的事情(使用更小的数据):https://github.com/AaronWatters/jp_doodle/blob/master/notebooks/Simple%20Python%20Examples.ipynb

这是屏幕截图 image color sampler 左图是全分辨率的图, 中间图像是全分辨率图像的3x3细节, 左色板是细节中间的颜色样本。有点 很难看到,但是整个图像中有一个灰色方块显示 可以使用鼠标拖动的细节的位置。

在您的情况下,您将在左侧显示子采样图像,然后将 来自Python内核的完整尺寸的详细区域片段。看到 https://github.com/AaronWatters/jp_doodle/blob/master/notebooks/misc/image%20streaming%20demo.ipynb有关流数据的示例 从numpy数组到jp_doodle小部件。