2017-01-22 4 views
1

Чтобы использовать Gnuplot (на Linux Ubuntu 16.04) Команды непосредственно задав аргументы без использования его приглашения, я вхожу это, например:Используйте 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, а во-вторых, не показывать корректно и третье это странное поведение на экране?

+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 программных выходов. Thw -c сценарий загрузки аргумента с использованием механизма вызова «gnuplot» и передать ему остальную часть командной строки в качестве аргументов. См. How to pass command line argument to gnuplot?

Обратите внимание, что ваш сценарий сначала обрабатывает файл данных, а THEN настраивает метки, заголовок и datafile separator. Вот почему вы видите странные тики.

+0

Как я уже упоминал в вопросе, я хочу выполнить команду из внешней программы/кода (например, java). Любой способ ввести аргумент output.png без этого скрипта? – AymenDaoudi

+0

Выполняю аналогичные команды из C++ и Fortran. Я не понимаю, почему это не сработает в вашем случае. В любом случае, если вы настаиваете на своем методе, лоток с чем-то вроде 'gnuplot -e 'filename =' DataFile.txt '; output =' image.png '" SettingsFile' – vagoberto

+0

Я знаю, что это сработает, однако мое решение будет развернуто так Я хочу избежать принуждения «их», чтобы запустить что-нибудь еще. Однако ваше решение работает нормально, подумайте над тем, чтобы добавить его в ответ. – AymenDaoudi