Python:绘制大矩阵的热图

Python : Plot heatmap for large matrix

我有一个大小为 500 X 18904 的大矩阵。

由于大部分值都是零,我无法清楚地看到图案,因为零在颜色条中占主导地位。

为了更仔细地查看数据,我需要放大图像的不同部分。有什么可靠的方法可以使用颜色条来可视化这些数据吗?

这是我的代码和输出。

import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio
j = sio.loadmat('UV_matrix.mat')
k = j['UV']  
plt.imshow(k, aspect='auto')
plt.show()

输出

我可以通过使用 numpy 数组想到两个选项。

  1. 假设您的数据大部分大于零但有很多零。:

    vmin = some_value_higher_than_zero
    plt.matshow(k,aspect='auto',vmin=vmin)
    
  2. 将所有零设置为 NaN。它们会自动被排除在外。

    k[k==0.0]=np.nan
    plt.matshow(k,aspect='auto')
    

注意。 imshow 和 matshow 都在这里工作。

另一个选择,当你的矩阵真的很稀疏时,使用散点图。

x,y = k.nonzero()
plt.scatter(x,y,s=100,c=k[x,y]) #color as the values in k matrix