我想绘制一个热图,我有一个二维数组,我按照这个答案: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的使用
答案 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();
(未经测试)应该有效。