Gnuplot не нуждается в равномерном пространстве осей X и Y. (см. еще один из моих ответов: https://stackoverflow.com/a/10690041/748858). Я часто занимаюсь сетками, которые выглядят как x[i] = f_x(i)
и y[j] = f_y(j)
. Это довольно тривиальный сюжет, файл данные выглядит как:
#datafile.dat
x1 y1 z11
x1 y2 z12
...
x1 yN z1N
#<--- blank line (leave these comments out of your datafile ;)
x2 y1 z21
x2 y2 z22
...
x2 yN z2N
#<--- blank line
...
...
#<--- blank line
xN y1 zN1
...
xN yN zNN
(обратите внимание на пустые строки)
файл данные, как, которые могут быть построены как:
set view map
splot "datafile.dat" u 1:2:3 w pm3d
Опция set pm3d corners2color
может для тонкой настройки, в каком углу вы хотите покрасить созданный прямоугольник.
Также обратите внимание, что вы могли бы сделать по существу тот же сюжет делает это:
set view map
plot "datafile.dat" u 1:2:3 w image
Хотя я не использовать это сам, так что, возможно, не с не одинаково разнесенной прямоугольной сеткой (вы нужно попробовать).
Ответ на ваш комментарий
Да, pm3d ли генерировать (M-1) х (N-1) четырехугольник, как вы упоминались в вашем комментарии - Он принимает 4 угла и (по по умолчанию) усредняет их значение для назначения цвета. Вы, кажется, не любите этого, хотя (в большинстве случаев) я сомневаюсь, что вы сможете отличить сюжет за достаточно большие M и N (больше 20). Итак, прежде чем мы продолжим, вы можете спросить себя, действительно ли необходимо построить график КАЖДОЙ ТОЧК.
Это, с небольшим количеством работы, gnuplot все еще может делать то, что вы хотите. Решение состоит в том, чтобы указать, что конкретный угол должен использоваться для назначения цвета всему четырехугольник.
#specify that the first corner should be used for coloring the quadrilateral
set pm3d corners2color c1 #could also be c2,c3, or c4.
Тогда просто добавить последнюю строку и последний столбец вашей матрицы, чтобы построить его в два раза (что составляет дополнительную Gridpoint для размещения большего набора данных. Вы не совсем там еще, вы должны изменить свою сетку значения на половину ячейки, чтобы ваши четырехугольники были центрированы в рассматриваемой точке - каким образом вы меняете ячейки, зависит от вашего выбора угла (c1, c2, c3, c4). Вам нужно будет поиграть с ним чтобы выяснить, какой из них вы хотите.
Обратите внимание, что проблема здесь не в gnuplot.Дело в том, что в файле данных недостаточно информации для построения поверхности MxN, заданной в MxN тройках. В каждой точке вам нужно знать, что это позиция (x, y) - это значение (z), а также размер четырехстороннего рисования - это больше информации, чем вы упаковали в файл. Конечно, вы можете угадать размер во внутренних точках (просто встретитесь на полпути), но на внешних точках нет никаких догадок. , но почему бы просто не использовать размер следующей внутренней точки?. Это хороший вопрос, и он (как правило) хорошо работает для прямоугольных сеток, но это только частный случай (хотя и общий), который (вероятно) потерпит неудачу для многих других сеток. Дело в том, что gnuplot решил, что усреднение углов обычно «достаточно близко», но затем дает вам возможность изменить его.
Ваша проблема в том, что вы не можете получить gnuplot для построения матрицы с неравномерными интервалами или что неравномерное расстояние между точками создает пробелы? – andyras
Моя проблема в том, что в сюжете появляются пробелы. Поэтому мне понадобится процедура построения матрицы без пробелов или интерполяций. – ricoamor