Построение нескольких тепловых карт из одного файла данных

#gnuplot #heatmap

#gnuplot #тепловая карта

Вопрос:

На самом деле я пытаюсь создать карту плотности, но ключевое слово, похоже, тепловая карта. Вот моя проблема. У меня есть файл данных, который выглядит следующим образом: (форматирование странное, но это квадратная матрица размером 12×12, каждый столбец разделен пробелом)

 #orbital            1
#upspin density

50  49  51  48  54  50  49  46  51  52  49  49
49  52  55  52  53  52  48  51  53  49  50  54
46  54  53  53  52  48  51  53  50  47  49  50
50  51  50  51  47  49  51  55  48  49  48  50
51  53  49  49  49  54  49  49  53  52  51  50
49  51  51  49  55  54  49  51  49  52  50  51
49  46  51  52  49  49  50  49  51  48  54  50
48  51  53  49  50  54  49  52  55  52  53  52
51  53  50  47  49  50  46  54  53  53  52  48
51  55  48  49  48  50  50  51  50  51  47  49
49  49  53  52  51  50  51  53  49  49  49  54
49  51  49  52  50  51  49  51  51  49  55  54
#downspin density


50  49  51  48  54  50  49  46  51  52  49  49
49  52  55  52  53  52  48  51  53  49  50  54
46  54  53  53  52  48  51  53  50  47  49  50
50  51  50  51  47  49  51  55  48  49  48  50
51  53  49  49  49  54  49  49  53  52  51  50
49  51  51  49  55  54  49  51  49  52  50  51
49  46  51  52  49  49  50  49  51  48  54  50
48  51  53  49  50  54  49  52  55  52  53  52
51  53  50  47  49  50  46  54  53  53  52  48
51  55  48  49  48  50  50  51  50  51  47  49
49  49  53  52  51  50  51  53  49  49  49  54
49  51  49  52  50  51  49  51  51  49  55  54
#upspin   downspin 


100  98 102  96 107  99  97  91 102 103  97  97
98 103 110 103 105 104  96 101 106  97  99 107
91 108 106 106 103  95 101 105 100  93  97 100
100 101  99 101  93  98 102 109  96  98  95  99
101 105  97  97  98 108  98  98 106 103 102  99
97 102 101  98 109 108  97 102  97 103 100 101
97  91 102 103  97  97 100  98 102  96 107  99
96 101 106  97  99 107  98 103 110 103 105 104
101 105 100  93  97 100  91 108 106 106 103  95
102 109  96  98  95  99 100 101  99 101  93  98
98  98 106 103 102  99 101 105  97  97  98 108
97 102  97 103 100 101  97 102 101  98 109 108
#upspin - downspin


0   0   1   1   0   0   0   0   0   1   1   0
0   0   1   1   0   1   1   0   0   1   0   0
1   1   1   0   1   0   1   1   0   0   0   0
0   0   1   1   1   1   1   1   0   1   0   0
1   1   0   1   0   1   1   1   1   0   1   1
1   0   1   1   1   0   1   0   1   0   1   0
0   1   1   0   1   0   0   1   0   1   0   0
1   1   0   1   1   1   1   0   1   1   1   1
0   1   1   1   1   0   0   0   0   0   0   0
1   1   0   1   1   1   0   1   0   1   1   0
1   0   0   1   1   0   0   0   1   1   1   1
1   0   0   0   1   0   1   0   0   0   0   1
#atom            1
#total upspin density                       downspin density


50  49  51  48  54  50  49  46  51  52  49  49
49  52  55  52  53  52  48  51  53  49  50  54
46  54  53  53  52  48  51  53  50  47  49  50
50  51  50  51  47  49  51  55  48  49  48  50
51  53  49  49  49  54  49  49  53  52  51  50 
49  51  51  49  55  54  49  51  49  52  50  51
49  46  51  52  49  49  50  49  51  48  54  50
48  51  53  49  50  54  49  52  55  52  53  52
51  53  50  47  49  50  46  54  53  53  52  48
51  55  48  49  48  50  50  51  50  51  47  49
49  49  53  52  51  50  51  53  49  49  49  54
49  51  49  52  50  51  49  51  51  49  55  54
#total downspin density


50  49  51  48  54  50  49  46  51  52  49  49  
49  52  55  52  53  52  48  51  53  49  50  54
46  54  53  53  52  48  51  53  50  47  49  50
50  51  50  51  47  49  51  55  48  49  48  50
51  53  49  49  49  54  49  49  53  52  51  50
49  51  51  49  55  54  49  51  49  52  50  51
49  46  51  52  49  49  50  49  51  48  54  50
48  51  53  49  50  54  49  52  55  52  53  52
51  53  50  47  49  50  46  54  53  53  52  48
51  55  48  49  48  50  50  51  50  51  47  49
49  49  53  52  51  50  51  53  49  49  49  54
49  51  49  52  50  51  49  51  51  49  55  54
  

Я пытаюсь написать скрипт, который принимает эти матрицы и создает индивидуальную «тепловую карту» для каждой. Моя проблема заключается в том, что когда я запускаю скрипт, я получаю сообщение об ошибке, в котором говорится, что данные не представляют сетку.Мой сценарий приведен ниже. Дополнительный вопрос заключается в том, какие форматы допустимы для gnuplot для чтения матрицы?

 set size ratio 1
set cbrange [0:0.5]
set palette defined (0 "red", 1 "blue")
set autoscale xfix
set autoscale yfix
set xtics 1
set ytics 1
set title "8x8 spin"
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 "densityarrays.d" matrix w image notitle
set term png enhanced
set output "/home/thecollective/Desktop/plots/plot1.png"
replot
  

Комментарии:

1. Ваш код работает для меня, какую версию ОС и Gnuplot вы используете?

2. Не могли бы вы прокомментировать это? Для меня это также отлично работает. В противном случае вопрос будет закрыт. Единственное, что вы должны использовать index , чтобы выбрать, какую тепловую карту строить, но это другая проблема.