表示绘图中二维彩色图的绘图表
https://www.qcustomplot.com/documentation/classQCPColorMap.html
详细说明
表示绘图中二维彩色图的绘图表。

数据存储在QCPColorMapData类中,可以通过data()方法进行访问。
彩色图具有三个维来表示数据点:键维,值维和数据维。与其他绘图表(例如图形)一样,键和值与您在QCPColorMap构造函数中指定的QCustomPlot曲面上的两个正交轴相对应。但是,数据维被编码为(key,value)点的颜色。
通过QCPColorMapData :: setSize设置键/值维度中的点(或单元格)数。通过QCPColorMapData :: setRange指定将显示这些点的绘图坐标范围。第一个单元格将以较低范围边界为中心,最后一个单元格将以较高范围边界为中心。可以通过直接使用QCPColorMapData :: setCell访问单元格或通过使用QCPColorMapData :: setData通过其坐标绘制单元格来设置数据。如果可能的话,您应该首选setCell,因为它不需要进行任何坐标转换,因此性能会更好一些。
如果颜色图使用法线(即非反向)键和值轴,则索引为(0,0)的单元格位于左下方。
为了向用户显示哪些颜色对应于哪些数据值,通常将QCPColorScale放置在轴rect的右侧。有关如何添加和使用色标的详细信息,请参见此处的文档。
改变外观
外观的中心部分是颜色渐变,可以通过setGradient指定。有关配置颜色渐变的详细信息,请参见QCPColorGradient的文档。
可以使用setDataRange指定映射到渐变颜色的数据范围。为了使数据范围包含最小到最大的整个数据集,请调用rescaleDataRange。
透明度
彩色地图的透明度可以通过两种机制来实现。一方面,您可以通过常规QColor接口为QCPColorGradient的色标指定alpha值。这将导致映射到这些色标周围的颜色的颜色图数据以相应的插值透明度出现。
另一方面,您还可以通过使用QCPColorMapData的alpha贴图功能,直接将alpha值应用于独立于其数据的每个单元格。相关方法是QCPColorMapData :: setAlpha,QCPColorMapData :: fillAlpha和QCPColorMapData :: clearAlpha()。
这两个透明胶片将在绘图中连接在一起,否则不会互相干扰。它们以乘法形式混合,因此两种模式下的alpha值例如分别为50%(128/255),则总透明度为25%(64/255)。
用法
像所有表示QCustomPlot中对象的数据一样,QCPColorMap是一个绘图表(QCPAbstractPlottable)。所以的plottable接口QCustomPlot适用(QCustomPlot :: plottable,QCustomPlot :: removePlottable等)
通常,您首先创建一个实例:
QCPColorMap *colorMap = new QCPColorMap(customPlot->xAxis, customPlot->yAxis);
colorMap->data()->setSize(50, 50);
colorMap->data()->setRange(QCPRange(0, 2), QCPRange(0, 2));
for (int x=0; x<50; ++x)
for (int y=0; y<50; ++y)
colorMap->data()->setCell(x, y, qCos(x/10.0)+qSin(y/10.0));
colorMap->setGradient(QCPColorGradient::gpPolar);
colorMap->rescaleDataRange(true);
customPlot->rescaleAxes();
customPlot->replot();
即使将键或值轴设置为对数比例,QCPColorMap始终以相等的键/值间隔显示数据。如果要对数轴使用QCPColorMap,则不应使用QCPColorMapData :: setData方法,因为它使用线性变换来确定单元格索引。而是直接使用QCPColorMapData :: setCell访问单元格索引。