首页 / 资讯中心 / 文章详情

Matplotlib 绘制二维热力图的三种方式

Matplotlib 绘制二维热力图的三种方式 ★ FEATURED ARTICLE
问题现象手里有一个二维数组,想把它画成一块块方格、颜色随数值变化,动手之后常遇到这些问题:用循环一个个画方格,数据稍大就卡住,画出来的格子还有缝;用图像显示函数画出来是模糊一片,格子边界被平滑掉了,看不出离散的方块;颜色不对,想要的是「越热越亮」,出来的却是彩虹色或全黑;坐标轴上标的是数组的序号,而不是真实的物理量,读图时要自己换算;图的方向和矩阵的行序对不上,第一行跑到了图的最下方;想加一条颜色刻度条,不知道该传给谁。原因分析第一,热力图的本质是「数值到颜色的映射」。二维数组里的每个数对应一个颜色,颜色由色彩映射表决定。选不同的映射表,同一份数据会呈现完全不同的观感:有的从黑到红再变白,适合表现强度;有的中间色偏白,适合表现正负偏离;彩虹色系虽然醒目,但会人为制造不存在的层次,做数据分析时通常要避开。第二,图像显示函数默认会做插值平滑。这个函数原本是给照片用的,为了让放大后的图像不出现马赛克,它默认在像素之间做平滑计算。方块图恰恰不希望被平滑,必须显式关闭插值,让每个数组元素渲染成一个边界清晰的方块。第三,坐标默认是数组下标。图像显示函数只知道行列序号,不知道这些数据对应的真实坐标。要让坐标轴显示物理量,需要用范围参数显式给出左、右、下、上四个边界值,否则读图的人只能看到序号。第四,行序与屏幕坐标的方向相反。
阅读完成 · 觉得有帮助?
咨询建站