【问题标题】:automate gnu-plot heatmap on non-uniform grid with bash使用 bash 在非均匀网格上自动化 gnu-plot 热图
【发布时间】:2014-05-02 09:19:29
【问题描述】:

我发现这篇关于在非均匀网格上绘制热图非常有用的帖子:Heatmap with Gnuplot on a non-uniform grid

现在,如果我将建议的命令手动放入 gnuplot 中,一切都会很好。但是,我想通过编写一个可以在我的 fortran 代码中直接调用的 shell 脚本来自动化图表。

这是脚本(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')

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

【问题讨论】:

  • gnuplot &lt;&lt;- EOF 在&lt;&lt; 之后删除- 怎么样
  • 是的,我实际上是在没有 - 的情况下开始的,它也不起作用。
  • 我也尝试了坚持。但图表仍然是完全空的。奇怪的是,当我在 gnuplot 中手动输入时,它可以完美运行。
  • 当您在命令提示符下调用脚本时会发生什么,即不是从您的 fortran 程序中调用。在没有./ 的情况下将其称为bash scriptname
  • 同理。它显示图形轮廓等,但“填充”是白色的。

标签: bash shell gnuplot heatmap


【解决方案1】:

$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调用,只是从问题中复制的)。

【讨论】:

  • 非常感谢! gnuplot 脚本版本完美运行,可以满足我的所有需求!
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 2019-07-21
  • 2016-12-26
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多