sns.clustermap
,并且我非常喜欢它作为一个简单的工具来概述大量数据(在我的例子中是时间序列数据,大多数是几百个条目)。
所以我想我也会喜欢一些更大的数据,但好吧,不是那么多......
我不介意在我的机器上计算大约需要 6 个小时,但是这 6 个小时没有得到任何输出是相当烦人的。
我确实显示了树状图,但应包含矩阵的字段仍为空。现在,假设seaborn没有处理像素之间插值的内置例程,这有点有意义。假设行的高度为 1 像素,则矩阵本身的高度就应为 20 000 像素,数据集包含 20 000 个条目。但是如果我增加我的
figsize
来表示 figsize=(400,400)
它需要一整天然后崩溃,因为它内存不足和/或因为我的数字太大(显然,对 png 文件的大小有硬性限制) .
有没有办法用这么大的数据集生成聚类图?
当我使用small图像尺寸运行它时,我可以生成所示的空图片,例如:
correlations = data.corr()
clusterplot = sns.clustermap(correlations, center=0
linewidths=0.4, figsize=(150, 150))
clusterplot.savefig('Cluster.png', facecolor='white', transparent=False)
由于这需要相当长的时间并且不会产生错误,我假设
clusterplot
包含聚类图,但我怎样才能得到它呢?假设有办法,我是否也可以在没有任何输出的情况下计算 clustermap ? IE。像clusterplot = sns.clustermap(correlations, center=0, showmap=False)
之类的东西可以节省一些时间吗?
我认为你的白色是由于
linewidths=0.4
。白色背景只是覆盖您实际数据的线条。
这是一个可重现的小示例:
N = 6
df = pd.DataFrame(np.random.random((N, N)))
sns.clustermap(data=df, linewidths=5, figsize=(3, 3))
N = 60
df = pd.DataFrame(np.random.random((N, N)))
sns.clustermap(data=df, linewidths=5, figsize=(3, 3))
只需将宽度设置为零:
linewidths=0
:
N = 60
df = pd.DataFrame(np.random.random((N, N)))
sns.clustermap(data=df, linewidths=0, figsize=(3, 3))
要从现有图表中获取基础数据,请使用:
clusterplot.data