原理
什么热度图啊、频谱图啊,诸如此类的,其本质都是数值与颜色在一幅图上的映射,我们称其为 colormap。
这里为简化描述,颜色统一采用RGBA模式,RGB就是红绿蓝,A代表透明度。
于是乎画出一张colormap,即遍历整幅图,为每个像素点设置一个RGBA值,函数可以表示为:
int colorMatrix[width][height];
void drawColorMap(){
for(int i = 0; i < width; ++i){
for(int j = 0; j < height; ++j){
colormap[i][j] = colorMatrix[i][j];
}
}
}
最终得到如下这种形式的效果:
实现方法
- 以Qt为UI框架
- 采用第三方库QCustomplot, 因为这个库使用起来很方便,只需要导入 .h 和 .cpp 文件就行,无需编译成动态链接库。
首先,我们对QCustomplot所呈现出的图像有个基础的认识,要实现colormap需要用到的地方我在图中标注了下,主要包括。
- 坐标轴的隐藏(看个人需求)
- 创建一个QCPColorMap类,用于实现上边所说的 drawColorMap 功能
- 创建