Python 使用 matplotlib 绘制大矩阵
Python plot Large matrix using matplotlib
我正在尝试绘制一个包含 2000 列和 200000 行的矩阵。当矩阵很小时,我可以测试绘图并测试导出矩阵图
matshow(my_matrix)
show()
但是,当my_matrix中添加更多行时,图形变得非常窄,因为行数远多于列数,因此在放大时会失去精度。我可以使矩阵图形可滚动吗?如果不是,我怎样才能在不损失精度的情况下可视化这样的矩阵?
我也尝试调用 savefig('filename', dpi=300) 来保存图像而不损失太多精度,但是当矩阵很大时它会抛出 MemoryError。非常感谢!
我最终结合了@tcaswell 和@lesnikow 的建议。
获取当前轴以便正确设置自动纵横比,我还将矩阵拆分为更小的矩阵:
import matplotlib.pylab as plt
for j in range(lower_bound_on_rows, upper_bound_on_rows): nums.append(j)
partial_matrix = my_matrix[nums, :]
plt.matshow(partial_matrix, fignum=100)
plt.gca().set_aspect('auto')
plt.savefig('filename.png', dpi=600)
我的矩阵在垂直方向上很长,所以我按行切片并保留较小矩阵中的所有列。如果您的矩阵在水平方向上很长,请像这样翻转索引 my_matrix[:, nums]
我正在尝试绘制一个包含 2000 列和 200000 行的矩阵。当矩阵很小时,我可以测试绘图并测试导出矩阵图
matshow(my_matrix)
show()
但是,当my_matrix中添加更多行时,图形变得非常窄,因为行数远多于列数,因此在放大时会失去精度。我可以使矩阵图形可滚动吗?如果不是,我怎样才能在不损失精度的情况下可视化这样的矩阵?
我也尝试调用 savefig('filename', dpi=300) 来保存图像而不损失太多精度,但是当矩阵很大时它会抛出 MemoryError。非常感谢!
我最终结合了@tcaswell 和@lesnikow 的建议。
获取当前轴以便正确设置自动纵横比,我还将矩阵拆分为更小的矩阵:
import matplotlib.pylab as plt
for j in range(lower_bound_on_rows, upper_bound_on_rows): nums.append(j)
partial_matrix = my_matrix[nums, :]
plt.matshow(partial_matrix, fignum=100)
plt.gca().set_aspect('auto')
plt.savefig('filename.png', dpi=600)
我的矩阵在垂直方向上很长,所以我按行切片并保留较小矩阵中的所有列。如果您的矩阵在水平方向上很长,请像这样翻转索引 my_matrix[:, nums]