2017-01-22 81 views
1

要命令直接通过不使用它的提示指定的参数使用Gnuplot(16.04在Linux Ubuntu的),我进入这个例如:使用GNUPLOT命令,而不提示

gnuplot -e "filename='DataFile.txt'" SettingsFile 

SettingsFile看起来是这样的:

plot filename with lines 
set title "Total Packets consumption" 
set xlabel "Time" 
set ylabel "Packets" 
set datafile separator "," 
pause -1 

而且DataFile.txt看起来是这样的:

包,时间(秒):

13392,120 
24607,240 
23867,360 
21764,480 
20727,600 
20004,720 
19719,840 
19758,960 
19728,1080 
20168,1200 
19737,1320 
19729,1440 
20135,1560 
20006,1680 
21301,1800 
19923,1920 
20002,2040 
19761,2160 
20918,2280 
22756,2400 
22820,2520 
23370,2640 
22987,2760 
22956,2880 
24427,3000 
23527,3120 
24009,3240 
23832,3360 
23464,3480 
23652,3600 
11212,3654 

第一个问题:

有没有一种方法来设置成SettingsFile一个PNG OUTPUTFILE?因此,我可以将它作为Gnuplot命令的参数输入,就像我对DataFile所做的一样。 (我想用这种方式,因为我想从外部代码调用它)

我要实现的是这样的:

gnuplot -e "filename='DataFile.txt'" SettingsFile OutputFile.png 

第二个问题:

屏幕我从gnuplot的获取输出不同显示xtics于预期:

enter image description here

另请注意,轴标题未显示!

现在,如果我尝试调整窗口,我得到这个:

enter image description here

图形被翻转奇怪,与标题设置,并根据需要被更新的抽动。

我应该如何解决这两个问题,首先在SettingsFile中提到一个输出文件,其次xtics没有正确显示,并在屏幕输出中显示第三个奇怪的行为?

+0

和哪个os?可以(?)有所作为。 – kebs

+0

我会问另一篇文章中的第二个问题。另外,你使用的是哪个版本的gnuplot和哪个终端(wxt,qt,x11)?注意''set datafile separator',''应该在'plot'命令之前进行(对于'xlabel','ylabel'和'title'命令也是如此)。对于第一个问题,尝试[传递命令行参数到gnuplot](http://stackoverflow.com/a/31815067/2174266) – vagoberto

+0

@kebs:使用'linux'标记,我用完整的操作系统信息更新了我的问题。 – AymenDaoudi

回答

2

有几个命令可以通过分号被添加到gnuplot -e,例如:

gnuplot -p -e 'filename="data.txt"; fileout="image.png"' SettingsFile 

SettingsFile应该已经有一个线配置终端类型:

set terminal png 
set output fileout 

set title "Total Packets consumption" 
set xlabel "Time" 
set ylabel "Packets" 
set datafile separator "," 

plot filename using 2:1 with lines 

如果您想了解更多控制你的代码,试试这个脚本(gnuplot 5.0+):

filename=(ARGC>0 ? ARG1 : 'DataFile.txt') # By default filename=DataFile.txt 
              # If called with one argument (ARGC=1) 
              # then `filename=ARG1` 

if(ARGC>1){ 
    # if called with two arguments (ARGC=2), then configure a png output 
    set terminal png 
    set output ARG2 
} 

set title "Total Packets consumption" 
set xlabel "Time" 
set ylabel "Packets" 
set datafile separator "," 

# the plot command ALWAYS at the end of the script after the settings 
plot filename using 2:1 with lines 
  • 如果您想绘制'DataFile。txt'(默认情况下):

    gnuplot -p SettingsFile 
    
  • 如果您想绘制另一个文件, AnotherData.txt

    gnuplot -p -c SettingsFile AnotherData.txt 
    
  • 如果你想绘制另一个文件并将其保存为PNG:

    gnuplot -p -c SettingsFile AnotherData.txt Output.png 
    

-p参数,您主要的gnuplot程序退出后,图形窗口的生存。使用gnuplot的“调用”机制,使用参数加载脚本-c并将其余的命令行作为参数传递给它。请参阅How to pass command line argument to gnuplot?

请注意,您的脚本首先绘制数据文件,然后配置标签,标题和datafile separator。这就是为什么你看到奇怪的抽搐。

+0

正如我在问题中提到的,我想从外部程序/代码(例如Java)执行该命令。没有脚本的情况下输入output.png参数的任何方法? – AymenDaoudi

+0

我从C++和Fortran执行类似的命令。我不明白为什么它不适合你的情况。无论如何,如果你坚持你的方法,托盘与像'gnuplot -e“文件名='DataFile.txt';输出='image.png'”SettingsFile' – vagoberto

+0

我知道它会工作,但我的解决方案将部署如此我想避免强迫他们去运行其他任何东西。但是,您的解决方案正常工作,请考虑将其添加到答案中。 – AymenDaoudi