Почему моя тепловая карта пуста (белая)?

Я хочу нарисовать тепловую карту, у меня есть 2d массив, и я последовал этому ответу: /questions/35535873/gnuplot-2d-grafik-matritsyi-dannyih/35535876#35535876 За исключением того, что я использую gnuplot в C++, и я удалил "неоднородный", так как первая строка и столбцы это обычные значения, а не галочки.

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

так что проблема должна исходить от моего использования API C++

1 ответ

Если 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();

(не проверено) должно работать.

Другие вопросы по тегам