Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在热图上正确显示多标准数据集?_Python_Numpy_Matplotlib - Fatal编程技术网

Python 如何在热图上正确显示多标准数据集?

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

我有一个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      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_标准的热图。

这将保留每列中的变化。

谢谢。在绘制多标准数据时,标准化数据是标准做法吗?我曾想过,当需要精确的分数范围时,应该有多个对应于单个分数范围的色条。但是我想它是可行的,直到数百个条形图出现,一切都变得一团糟。是的,这是处理
连续数据的标准做法,用于绘图和建模。