我在这里找到了非常有用的帖子,用于绘制非均匀网格上的热图:Heatmap with Gnuplot on a non-uniform grid
如果我把建议的命令手动放在gnuplot中,现在一切都很好。但是,我想通过编写一个shell脚本来自动化图形,我可以直接在我的fortran代码中调用它。
这是脚本(Map_Ent.sh):
#!/bin/bash
gnuplot <<- EOF
set pm3d map corners2color c1
set autoscale fix
set ytics 1
splot 'Career_Choice.txt' using 1:($2-0.5):3
EOF
eog Ent_map.png &
这就是我在Fortran中所说的:
call SYSTEM('bash ./Map_Ent.sh')
然而,当我这样做时,我的图表完全是白色的。关于我做错了什么的任何想法?我会非常感谢任何建议!
答案 0 :(得分:0)
$2
由bash解释并且评估为空。因此,gnuplot仅绘制-0.5
。 $2
是column(2)
的快捷方式。只需使用后者,它应该工作正常:
#!/bin/bash
gnuplot <<- EOF
set pm3d map corners2color c1
set autoscale fix
set ytics 1
splot 'Career_Choice.txt' using 1:(column(2)-0.5):3
EOF
没有必要使用bash作为中间步骤,只需使用gnuplot脚本:
file.gp
:
set pm3d map corners2color c1
set autoscale fix
set ytics 1
splot 'Career_Choice.txt' using 1:(column(2)-0.5):3
然后
call SYSTEM('gnuplot -persist file.gp')
(我不确定fortran电话,只是从问题中复制过来。)