【发布时间】:2017-07-01 19:47:17
【问题描述】:
我有一个包含直方图的大型稀疏矩阵,我想将其绘制为热图。通常我会简单地绘制完整的矩阵(h),如下所示:
import matplotlib.pyplot as plt
plt.imshow(h.T, interpolation="nearest", origin="lower")
plt.colorbar()
plt.savefig("corr.eps")
然而,在这种情况下,我有一个问题,即完整矩阵的尺寸为189,940x189,940,这对于我来说太大而无法保存在内存中。我找到了关于绘制稀疏模式的帖子(例如 python matplotlib plot sparse matrix pattern ),但没有关于如何绘制热图而不将其转换为密集矩阵的文章。有可能这样做吗? (或者有没有其他方法可以在不耗尽 RAM 的情况下绘制它?)我的稀疏矩阵目前是一个 lilmatrix (scipy.sparse.lil_matrix)。
【问题讨论】:
-
我自己从未尝试过,但你有没有看过
datashader。可能有用。 -
您是否考虑过简单地将点单独绘制为散点或矩形集合?
-
我通常会这样做,但在这种情况下,每个单元格都包含一个计数,所以我不关心单元格是否被填充,而是关心它拥有什么值。我不确定如何使用 scatter 将其可视化。我还没有看过
datashader,但应该看看。 -
在热图中,颜色用于传达有关数据值的信息。通常这是通过使用颜色图来完成的。因此,根据颜色图设置分散或收集项目的颜色可能是一种选择。
-
我明白你的意思。您知道如何在实践中实施吗?
标签: python matplotlib scipy sparse-matrix heatmap