我是 gnuplot 的新手,在传递参数时遇到了很多麻烦,现在我有这个简单的 bash 脚本和一个 gnuplot 脚本。
在 bash 脚本中plot.sh
我应该修改我的文件然后将其发送到 gnuplot 脚本进行绘制或者我可以修改我的文件并只发送一个参数(从另一个脚本 $1 传递的数字)到 gnuplot 脚本来标识要绘制哪个文件,问题是这两种方式都不起作用,我似乎做错了!有什么帮助吗?
这是我的 bash 脚本 plot.sh
#!/bin/bash
sed -i 's/ns/;/g' /dev/shm/waitingTime$1.txt
gnuplot -e "filename='/dev/shm/waitingTime$1'" file.gnuplot
这是我的 gnuplot 脚本,名为 file.gnuplot
#!/home/yas/file.gnuplot
set xlabel "start"
set ylabel "Delay"
set autoscale
set style line 1 lt 1 lw 3 pt 3 linecolor rgb "red"
plot<"filename"> using 1:2 w points title "tests"
set terminal postscript portrait enhanced mono dashed lw 1 'Helvetica' 14
set output '/dev/shm/TT.pdf'
pause -1
文件结束.gnuplot
答案1
如果我理解正确的话,你希望图表显示在显示屏上,并且然后在 PDF 文件中有一个副本/dev/shm/TT.pdf
。
我在这里看到两个问题:
绘图的说明 --- 您将文件名存储在 中
filename
,因此您应该只说plot filename using 1:2 w points title "tests"
没有
<"
...东西。如果您想要 pdf 文件,您应该
replot
在更改终端和输出文件后添加一个(仔细检查您是否可以在目标目录中写入)。
我已经创建了一个文件data.dat
和该文件file.gnuplot
:
set xlabel "start"
set ylabel "Delay"
set autoscale
set style line 1 lt 1 lw 3 pt 3 linecolor rgb "red"
plot filename using 1:2 w points title "tests"
set terminal postscript portrait enhanced mono dashed lw 1 'Helvetica' 14
set output 'TT.pdf'
replot
pause -1
并使用以下命令调用它:
gnuplot -e "filename='data.dat'" file.gnuplot
我有输出:
...以及相应的TT.pdf
文件。
顺便说一句,pause
我觉得最好在最后加上
set terminal wxt persist
在开始时,删除暂停。脚本将自然结束,带有图表的窗口将保持不变,直到您将其关闭。