shell Gnuplot:plot未更新

bkhjykvo  于 11个月前  发布在  Shell
关注(0)|答案(1)|浏览(94)

在脚本bash中,我是这样做:
1.每隔3分钟,我创建一分钟的二进制数据以获得瀑布。
第一个月
1.然后,我解析met文件,并将.met文件的内容(bin数、扫描数等)与两个变量关联起来:nb_bins和nb_scans。
1.我把我的瀑布创建成一个png图像:

gnuplot -persist << EOF
            plot 'plot.bin' binary array=${nb_bins}x${nb_scans} format='%float' with image
            set term png
            set output 'plot.png'
            replot
            set term wxt 
EOF

字符串
问题是,我的plot.png图像在我的代码第一次启动时被修改(bash script.sh),但随后,我的代码自动运行crontab */my/directory/script.sh,然后图像被更新,没有任何内容(大小为0字节)。而我的文件plot.met和plot.bin刷新没有任何问题。
我已经尝试了不同的方法:使用gnuplot -e“”代替gnuplot persist,不使用set term wxt,尝试不同的crontab时间,杀死gnuplot进程,但是没有任何效果,我也没有其他的想法。

f8rj6qna

f8rj6qna1#

在不知道你的详细安排的情况下,这里有一个让gnuplot在无限循环中运行的建议(你可以通过按x停止)。我的默认终端也是wxt
示例脚本将每秒绘制一个函数,其中包含一些随机因子和随机颜色,这只是为了说明目的。请将其替换为plotting命令。
我不确定你是否需要一个PNG来做其他的事情,或者仅仅在wxt终端中显示图形是否就足够了。
实际上,我在实验室中有一个简单的设置,程序每分钟将温度和湿度附加到一个每日文件中,我完全独立地运行gnuplot,让它每分钟显示文件的内容。
我不确定这是否解决了你的问题。

脚本:

### endless loop for replotting after some waiting time
reset session

stop = 0
bind x "stop=1"

f(x) = sin(x)/x

while (!stop) {

    set title strftime("%Y-%m-%d %H:%M:%S",time(0))
    b0 = rand(0)+1
    plot f(x*b0) w l lw 3 lc rgb 0x1000000*rand(0)
    
    pause 1  # number of seconds
}
### end of script

字符串

结果:(wxt终端截图)


的数据

添加:

如果您只需要从当前可用的数据创建PNG文件,请创建脚本文件,例如plot.gp

set term png
set output 'plot.png'
plot 'plot.bin' binary array=${nb_bins}x${nb_scans} format='%float' with image
set output   # can be skipped if gnuplot will be terminated


我不会使用-persist(这可能会引起你的问题),但是gnuplot会一次又一次地开始和结束。

gnuplot -c "plot.gp"

相关问题