gnuplot的Bash脚本

时间:2016-09-06 15:34:54

标签: bash gnuplot

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

我的问题是 x坐标(第1列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文件,但我不知道该怎么做。

  3. 感谢您的帮助

    修改

    BASH SCRIPT

    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
    

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助

startTW = time.time()
fetchinTW = """SELECT col.vessel_hash,ST_X(col.the_geom) AS long, ST_Y(col.the_geom) AS lat
                FROM samplecol AS col
                WHERE col.timestamp >='2016-06-10T00:00:00.000Z' and col.timestamp <= '2016-07-10:00:00.000Z' """

cursor.execute(fetchinTW)
end_query3 = time.time()
print "Time to execute query: ", end_query3 - start_TW

以** $ ** gnuplot filename

执行脚本文件

click here for more details