Gnuplot 2D-матрица с изображением, хотите рисовать границы для каждой ячейки

Я хочу построить матрицу 18x18 с gnuplot. Вот мои коды:

set size ratio 1
set palette gray negative
set xrange[-0.5:17.5]
set yrange[-0.5:17.5]
set cbrange[-0.2:0.8]
set xtics 0,1,17
set ytics 0,1,17
set xtics offset -0.5,0
set title "Resolusition Matrix for E"
plot "Mat" matrix w image noti

Затем я получил такой рисунок:

enter image description here

Теперь я хотел бы добавить границы в каждую ячейку, которая будет выглядеть так:

enter image description here

Спасибо.

Ответ 1

В вашем случае вы можете установить один незначительный tic, который затем лежит на границе между двумя пикселями, и нарисуйте на них сетку:

set size ratio 1
set palette gray negative
set autoscale xfix
set autoscale yfix
set xtics 1
set ytics 1
set title "Resolution Matrix for E"

set tics scale 0,0.001
set mxtics 2
set mytics 2
set grid front mxtics mytics lw 1.5 lt -1 lc rgb 'white'
plot "Mat" matrix w image noti

Обратите внимание, что set grid front также выводит тики на передний план. Чтобы избежать этого, вы можете масштабировать тики до 0. Для второстепенных тиков вы должны использовать очень небольшое число, 0 опускает линии сетки на второстепенных тиках.

Результат с 4.6.3:

enter image description here

EDIT: для управления линиями сетки и тиковыми метками независимо, вы можете использовать неиспользованные x2 и y2 для рисования сетки (на основе ответа на How я рисую вертикальную линию в gnuplot?):

set size ratio 1
set palette gray negative
# grid lines
set x2tics 1 format '' scale 0,0.001
set y2tics 1 format '' scale 0,0.001
set mx2tics 2
set my2tics 2

# labeling
set xtics 5 out nomirror
set ytics 5 out nomirror

set grid front mx2tics my2tics lw 1.5 lt -1 lc rgb 'white'

set xrange[-0.5:39.5]
set yrange[-0.5:39.5]
set x2range[-0.5:39.5]
set y2range[-0.5:39.5]

plot "Mat" matrix w image notitle

С gnuplot версии 4.6 это требует установки явных диапазонов, так что значения x и x2 (unused!) равны. Информация может быть извлечена с помощью stats из файла данных.

Использование версии 5 позволяет использовать set link. Вместо всего этого set *range. Вы можете использовать:

set autoscale fix
set link x
set link y

Результат:

enter image description here