为什么我的热图是空的(白色)?

时间:2017-10-19 13:12:14

标签: c++ gnuplot gnuplot-iostream

我想绘制一个热图,我有一个二维数组,我按照这个答案:https://stackoverflow.com/a/32459287/2370139 除了我在c ++中使用gnuplot并且我删除了#34; nonuniform"因为第一行和第一列是常规值,而不是刻度。

Gnuplot gp;
gp << "set autoscale xfix \n";
gp << "set autoscale yfix \n";
gp << "set autoscale cbfix \n";
gp << "plot '-' matrix with image notitle\n";
gp.send2d(pmat);
gp.flush();

pmat是一个大小为50 * 50的二维数组。它填充的浮点值介于0和1之间。 它确实绘制了一个完美的白色网格,问题是什么?

注意:上述命令在普通gnuplot终端中使用时可以正常工作,文本文件如

0.5 0.3 0.3
0.2 0.4 0.6
0.2 0.8 1

所以问题必须来自我对C ++ api的使用

1 个答案:

答案 0 :(得分:0)

如果gnuplot-iostream没有内置支持矩阵格式的二维数据,您可以在代码中轻松实现。像

这样的东西
gp << "plot '-' matrix with image notitle\n";
for (int i = 0; i < 50; ++i) {
    for (int j = 0; j < 50; ++j)
        gp << pmat[i][j] << "\t";
    gp << "\n";
}
gp.flush();

(未经测试)应该有效。