【发布时间】:2015-09-21 18:56:25
【问题描述】:
我正在尝试绘制一个包含 2000 列和 200000 行的矩阵。当矩阵很小时,我可以使用
测试绘图并测试导出矩阵图matshow(my_matrix)
show()
但是,当向 my_matrix 添加更多行时,由于行数多于列数,图形会变得非常窄,从而在放大时失去精度。我可以使矩阵图形可滚动吗?如果没有,我怎样才能在不损失精度的情况下可视化这样的矩阵?
我也尝试调用 savefig('filename', dpi=300) 以保存图像而不会损失太多精度,但是当矩阵很大时它会抛出 MemoryError 。非常感谢!
【问题讨论】:
-
可能对您的需求来说太简单了,但是您是否尝试过将大矩阵拆分为多个部分,然后在每个部分上调用 matshow?
-
ax.set_aspect('auto')将解决纵横比问题,但您的像素将是矩形而不是正方形。我已经用 2k x 150k 做了一些事情,但它开始突破 mpl 的极限(c++ 光栅化代码中有一些硬编码的 32 位整数)。 -
@tcaswell matshow() 返回一个 AxesImage。我相信 set_aspect() 函数只能由 Axes 对象访问。我不知道如何从 AxesImage 中获取 Axes 对象。
-
我最终采纳了您的建议。通过调用 ax = plt.gca() 然后 ax.set_aspect('auto') 获取当前轴,我还将矩阵拆分为更小的矩阵。
-
嗨@emily - 考虑为您自己的问题添加一个答案,以便将来遇到相同问题的人可以轻松找到它。
标签: python matplotlib matrix out-of-memory large-data