Вот как я это сделал для массива размером 512x512 (например).Предположим, у меня есть файл данных A.dat
, который должен использоваться для цветовой карты и B.dat
для контуров.
- Создайте таблицу из
B.dat
, содержащую данные контура, и сохраните ее во временнуюfile temp.dat
. - Постройте цветовую карту, используя
A.dat
, и нанесите контурные линии из временного файла temp.dat
в одной команде.
Вот мой код (несколько упрощенный для ясности):
# Set initial state
reset
set term X11
set palette @MATLAB # see http://www.gnuplotting.org/matlab-colorbar-with-gnuplot/
# Create a file for contour data
set contour base
set cntrparam levels 25
set isosample 250,250
unset surface
set table "temp.dat"
splot "B.dat" binary array=512x512 format='%double'
unset table
# Plot the final results
set title "Contours and Colormap"
set size square
unset key
set xtics ('0' 0, '0.5' 255, '1.0' 511) # Change these according to your dimensions
set ytics ('0' 0, '0.5' 255, '1.0' 511) # Change these according to your dimensions
set cbrange [0.0:1.0]
set xlabel "X (scaled by height)"
set ylabel "Z (scaled by height)"
set terminal png
set output "output.png"
plot "A.dat" binary array=512x512 format='%double' with image, "temp.dat" with lines lt -1
Чтобы увидеть, как он выглядит, я использовал скриптовую версию этого кода для получения этот фильм (и другие) для моего исследования!