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 数组想到两个选项。
假设您的数据大部分大于零但有很多零。:
vmin = some_value_higher_than_zero
plt.matshow(k,aspect='auto',vmin=vmin)
将所有零设置为 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
我有一个大小为 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 数组想到两个选项。
假设您的数据大部分大于零但有很多零。:
vmin = some_value_higher_than_zero plt.matshow(k,aspect='auto',vmin=vmin)
将所有零设置为 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