Python:绘制大型矩阵的热图

Ran*_*ski 2 python matplotlib heatmap python-3.x colorbar

我有一个尺寸为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()
Run Code Online (Sandbox Code Playgroud)

输出 在此处输入图片说明

JLT*_*JLT 6

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

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

    vmin = some_value_higher_than_zero
    plt.matshow(k,aspect='auto',vmin=vmin)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将所有零设置为NaN。他们被自动排除在外。

    k[k==0.0]=np.nan
    plt.matshow(k,aspect='auto')
    
    Run Code Online (Sandbox Code Playgroud)

注意 imshow和matshow都可以在这里使用。

当矩阵真正稀疏时,另一种选择是使用散点图。

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