Python:绘制大矩阵的热图

时间:2016-08-02 16:38:45

标签: python python-3.x matplotlib heatmap colorbar

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

由于大多数值都是零,因此我无法清晰地看到图案,因为零在颜色栏中占主导地位。

为了更仔细地查看数据,我需要放大图像的不同部分。有没有可靠的方法使用colorbar可视化这些数据?

这是我的代码和输出。

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()

输出 enter image description here

1 个答案:

答案 0 :(得分:4)

我可以通过使用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')
    
  3. NB。 imshow和matshow都在这里工作。

    另一种选择,当你的矩阵非常稀疏时,就是使用散点图。

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