我有一个数据文件,如下所示:
1 3 4 5 5 3 4
4 5 5 3 5 3 2
3 4 5 3 5 2 5我使用这个文件通过下面的代码在gnuplot中构建一个热图:
set term png
set out "test.png"
set pm3d map
set size ratio 1
set pm3d interpolate 0,0
set tics out nomirror
stats 'test.dat' nooutput
N = STATS_records
M = STATS_columns
splot 'test.dat' matrix using ($1/(N-1)*10-5):($2/(M-1)*3-(-1)):3 notitle
set out它工作正常,一切都很好。
除了现在我想删除代码中的常量(10,5,3,-1),并将它们替换为我的数据文件中的头文件。
数据文件应为:
10, 5, 3, -1
1 3 4 5 5 3 4
4 5 5 3 5 3 2
3 4 5 3 5 2 5代码类似于:
delta_x = ???
x_min = ???
delta_y = ???
y_min = ???
set term png
set out "test.png"
set pm3d map
set size ratio 1
set pm3d interpolate 0,0
set tics out nomirror
stats 'test.dat' nooutput
N = STATS_records
M = STATS_columns
splot 'test.dat' matrix using ($1/(N-1)*delta_x-min_x):($2/(M-1)*delta_y-min_y):3 notitle
set out当为热图加载数据时,我也应该停止使用第一行,所以$1,$2不知何故是错误的。
如何仅使用第一行读取变量并开始从文件的第二行读取数据?
发布于 2018-02-10 23:54:14
结合使用stats和every从第一行开始获取常量,然后使用awk输出跳过第一行。
stats 'test.dat' every ::0::0 using 1:2 nooutput
delta_x = STATS_min_x
x_min = STATS_min_y
stats 'test.dat' every ::0::0 using 3:4 nooutput
delta_y = STATS_min_x
y_min = STATS_min_y
set size ratio 1
set pm3d interpolate 0,0
set tics out nomirror
stats 'test.dat' every ::1 nooutput
N = STATS_records
M = STATS_columns
splot '<awk "NR>1 {print}" test.dat' matrix using ($1/(N-1)*delta_x-x_min):($2/(M-1)*delta_y-y_min):3 notitlehttps://stackoverflow.com/questions/48721966
复制相似问题