Python 如何在热图上正确显示多标准数据集?
我有一个numpy数组中的数据集,格式如下。每个“列”都是一个单独的标准。我想显示一个热图,其中每个“列”对应于该列中的分数范围:Python 如何在热图上正确显示多标准数据集?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我有一个numpy数组中的数据集,格式如下。每个“列”都是一个单独的标准。我想显示一个热图,其中每个“列”对应于该列中的分数范围: [[226 600 3.33 915.92.6 98.6] [ 217 700 3.34 640. 93.7 98.5 ] [ 213 900 3.35 662. 88.8 96. ] ... [ 108 600 2.31 291. 64. 70.4 ] [ 125
[[226 600 3.33 915.92.6 98.6]
[ 217 700 3.34 640. 93.7 98.5 ]
[ 213 900 3.35 662. 88.8 96. ]
...
[ 108 600 2.31 291. 64. 70.4 ]
[ 125 800 3.36 1094. 65.5 84.1 ]
[109 400 2.44 941.52.3 68.7]
我编写了一个生成热图的函数:
def HeatMap(data):
#generate heatmap figure
figure = plt.figure()
sub_figure = figure.add_subplot(111)
heatmap = sub_figure.imshow(data, interpolation='nearest',cmap='jet', aspect=0.05)
#generate color bar
cbar = figure.colorbar(ax=sub_figure, mappable=heatmap, orientation='horizontal')
cbar.set_label('Scores')
plt.show()
这是函数生成的内容:
如上所述,可以看出问题出在我的函数中的某个地方,因为在2500个数据集中,得分范围从0到最大值。我如何修改我的函数,以便热图根据分数的范围而不是整个数据集的范围在列中显示分数?我的第一个想法是将数组维度更改为[[226]、[600]]等,但不确定这是否是解决方案
感谢您的帮助您不能为每一列设置单独的cmap
如果您想查看每列根据其自身范围的变化,可以在绘制热图之前按列对数据进行规范化
代码
将numpy导入为np
x=np.数组([[1000,10,0.5],
[ 765, 5, 0.35],
[ 800, 7, 0.09]])
x_标准=x/x.max(轴=0)
打印(x_标准)
# [[ 1. 1. 1. ]
# [ 0.765 0.5 0.7 ]
# [ 0.8 0.7 0.18 ]]
#绘制x_标准的热图。
这将保留每列中的变化。谢谢。在绘制多标准数据时,标准化数据是标准做法吗?我曾想过,当需要精确的分数范围时,应该有多个对应于单个分数范围的色条。但是我想它是可行的,直到数百个条形图出现,一切都变得一团糟。是的,这是处理连续数据的标准做法,用于绘图和建模。