【问题标题】:Bash script for gnuplot用于 gnuplot 的 Bash 脚本
【发布时间】:2016-09-06 15:34:53
【问题描述】:

我有一个 c++ 代码,每次生成一个可变数量的“.txt”文件。 我正在使用一个 bash 脚本来加载 txt 文件并将它们发送到 gnuplot 脚本。然后我必须在同一个图中绘制它们每个相同的 2 列(代表高度与时间图)。

我的问题是 x 坐标(txt 文件的第一列)并不总是以相同的值结束,当 x 坐标的最后一个值不为零时,我需要在 gnuplot 图中插入一个十字。你知道怎么做吗?

这就是我绘制多个文件的方式

plot for [object in objectnames] object.".txt" using 1:2 w l title object

其中 "objectnames" 是一个字符串,其中包含 BASH 发送的所有文件名

现在,为了绘制 CROSSES,我想到了两种方法:

  1. 将坐标数组发送到 gnuplot 脚本,然后设置一些标签,但 GNUPLOT 不喜欢数组,我无法以这种方式创建可变数量的标签。

  2. 另一种方法是读取 gnuplot 脚本中的 txt 文件,但我不知道该怎么做。

感谢您的帮助

编辑

BASH 脚本

export DATA_DIR=${1:-/home/../output}
export objectname
space=" "
OUT_FILES="$(find -L $DATA_DIR -name '*_Trajectory.txt')"

for file in $OUT_FILES; do  
    fig=$(basename "$file")             
    objectID=$(echo $fig| cut -d'_' -f 1)

    # filenames concatenation
    objectname=$objectname$objectID$space
 done

 export figNameAltitude="${file/${fig}/altitudePlot.png}"

gnuplot -e "folder='${DATA_DIR}';objectnames='${objectname}';figName='${figNameAltitude}';lineWidth='${linewidth}'" altitudePlot.gp

GNUPLOT SCRIPT(我避免插入所有关于标题、轴等的行)

plot for [object in objectnames] folder.'/'.object."_Trajectory.txt" using 1:2 w l lw lineWidth title object

【问题讨论】:

  • 请提供一个最小的、完整的示例,包括数据和所有绘图命令。
  • 我从 bash 和 gnuplot 脚本中插入了一些命令。我知道仅仅用写作来解释并不是一件容易的事。我的问题可以用一句话来概括:考虑到脚本必须尽可能通用这一事实,我如何在 gnuplot 中数据集的绘图末尾添加一个符号(例如十字)?
  • 我将脚本格式化为代码;请检查我是否正确。
  • 你想把那个十字架放在哪里(哪个坐标)?
  • 谢谢彼得,没错。问题是我不知道先验坐标。我有这个可变数量的文件,如果每个文件的第一列不以零终止(作为最后一个值),我必须在坐标 x= 第一列的最后一个值和 y=第二个的最后一个值列。但这应该只在某些情况下发生。一切都应该尽可能地通用

标签: bash gnuplot


【解决方案1】:

这可能会有所帮助

     set title "Energy vs. Time for Sample Data"

     set xlabel "Time"

     set ylabel "Energy"

     plot "d1.dat" with lines

     pause -1 "Hit Enter to continue" 

执行脚本文件为**$**gnuplot 文件名

click here for more details

【讨论】:

  • 使用代码块回答问题时使用代码块。
  • 发布代码时,先用鼠标选中代码,然后在格式化菜单中按{}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 2011-07-27
  • 2017-10-05
  • 1970-01-01
相关资源
最近更新 更多