使用bash在非均匀网格上自动化gnu-plot热图

时间:2014-05-02 09:19:30

标签: bash shell gnuplot heatmap

我在这里找到了非常有用的帖子,用于绘制非均匀网格上的热图: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')

然而,当我这样做时,我的图表完全是白色的。关于我做错了什么的任何想法?我会非常感谢任何建议!

1 个答案:

答案 0 :(得分:0)

$2由bash解释并且评估为空。因此,gnuplot仅绘制-0.5$2column(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电话,只是从问题中复制过来。)