写一段代码使用QCustomplot 生成热力图
时间: 2024-03-16 10:42:19 浏览: 160
热力图生成代码,适用于各种色斑图生成
好的,以下是一个使用QCustomplot库生成热力图的简单示例代码:
```c++
#include <QApplication>
#include <QCustomPlot/qcustomplot.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个QCustomPlot对象
QCustomPlot customPlot;
// 设置图表标题
customPlot.plotLayout()->insertRow(0);
QCPTextElement *title = new QCPTextElement(&customPlot, "Heatmap Example", QFont("sans", 16, QFont::Bold));
customPlot.plotLayout()->addElement(0, 0, title);
// 设置x和y轴标签
customPlot.xAxis->setLabel("X Axis");
customPlot.yAxis->setLabel("Y Axis");
// 设置x和y轴范围
customPlot.xAxis->setRange(0, 10);
customPlot.yAxis->setRange(0, 10);
// 创建一个二维数组表示热力图的数据
const int numRows = 10;
const int numCols = 10;
double data[numRows][numCols];
for (int i = 0; i < numRows; ++i)
{
for (int j = 0; j < numCols; ++j)
{
data[i][j] = qSin(i / 5.0) * qSin(j / 5.0);
}
}
// 创建一个QCPColorMap对象
QCPColorMap *colorMap = new QCPColorMap(customPlot.xAxis, customPlot.yAxis);
colorMap->data()->setSize(numRows, numCols);
colorMap->data()->setRange(QCPRange(0, 10), QCPRange(0, 10));
for (int i = 0; i < numRows; ++i)
{
for (int j = 0; j < numCols; ++j)
{
colorMap->data()->setCell(i, j, data[i][j]);
}
}
// 设置颜色映射
QCPColorGradient gradient;
gradient.setColorStopAt(0, Qt::blue);
gradient.setColorStopAt(0.5, Qt::white);
gradient.setColorStopAt(1, Qt::red);
colorMap->setGradient(gradient);
colorMap->rescaleDataRange();
// 添加热力图到QCustomPlot对象
customPlot.addPlottable(colorMap);
// 设置色标
QCPColorScale *colorScale = new QCPColorScale(customPlot);
customPlot.plotLayout()->addElement(0, 1, colorScale);
colorScale->setDataRange(colorMap->dataRange());
colorScale->setGradient(gradient);
// 关联热力图和色标
colorMap->setColorScale(colorScale);
// 显示图表
customPlot.show();
return a.exec();
}
```
这个示例代码创建了一个大小为10x10的二维数组表示热力图的数据,并使用QCPColorMap对象将数据可视化成热力图。同时,还在图表上添加了一个标题、x和y轴标签、色标等元素。最后,调用show()方法显示图表。
阅读全文