2015-12-03 3 views
2

Используя определенную программу (панель инструментов PersistenceLandscapes) Я генерирую большое количество скриптов, из которых я создаю графики с gnuplot. Я перебираю файлы и заставляю gnuplot показывать график командой gnuplot gnuplotCommand.txt -p. Как я могу заставить gnuplot сохранить сюжет в, скажем, PNG или (желательно) формате EPS? (Я хочу, чтобы избежать вмешательства с gnuplotCommand -типа скриптов.)Сделать GNUPLOT сохранить график из оболочки

ответ

2

Самым простым решением является добавление настройки терминала через опцию -e и вывести стандартный вывод на требуемый выходной файл:

gnuplot -e 'set term pngcairo' gnuplotCommand.txt > output.png 
+0

Это удобно. Я просто использую две версии одной и той же сюжетной программы. Один для pngcairo и один для X11 с паузой и перечитанием для экрана. Но это приятно знать. Никогда не пытаться подключиться к файлу png, подобному этому. Мои выходные файлы должны быть названы по дате, однако, поэтому мне нужно установить имя файла для - system («date +% F :). Png - я бы просто использовал \ n после установленного термина, чтобы добавьте больше строк или, возможно, именование можно сделать в bash? Моя шляпа выключена, @Christoph. – SDsolar

3

Вы можете попробовать Баш скрипт как

gnuplot <<- EOF 
    set term png 
    set output 'gnuplotCommand.txt.png' 
    load 'gnuplotCommand.txt' 
EOF 

или, в .eps версии

gnuplot <<- EOF 
    set terminal postscript eps 
    set output 'gnuplotCommand.txt.eps' 
    load 'gnuplotCommand.txt' 
EOF 
+1

изменений 'участок«gnuplotCommand.txt'' к 'нагрузки» gnuplotCommand.txt'', так как этот файл автоматически сгенерированный скрипт из другой программы. – vagoberto

+0

Я думаю, вы просто ответили на вопрос, который я задал в комментарии выше. Мне нужно использовать систему («date + F»). Png как мое имя файла. Я знаю, как это сделать в двух строках кода. TNX. – SDsolar

2

Если у вас есть версия gnuplot 5.0, вы можете передать аргументы в свой скрипт. Например,

# script.gp 
if (ARGC > 1) { 
    set terminal ARG2 
    set output ARG3 

    print 'output file : ', ARG3, ' (', ARG2 , ')' 
} 

# load the script needed 
load ARG1 

Этот скрипт должен вызываться с опцией -c

gnuplot -c script.gp gnuplotCommand.txt pngcairo output.png 

В этом примере мы установили переменные ARG1=gnuplotCommand.txt, ARG2=pncairo и ARG3=output.png. Количество аргументов: ARCG=3. Кроме того, в качестве имени основного сценария было установлено ARG0=script.gp.

Если вы просто хотите увидеть результат, не сохраняя его в файл, вы можете вызвать этот сценарий как:

gnuplot -p script.gp gnuplotCommand.txt 

Вы можете проверить, если пользователь дал имя выходного файла , Если нет, то мы можем использовать имя по умолчанию:

if (ARGC > 1) { 
    if (ARGC < 3) { ARG3="default" } # without extension... it doesn't matter in linux :) 
    set terminal ARG2 
    set output ARG3 

    print 'output file : ', ARG3, ' (', ARG2 , ')' 
} 
+0

Аргументы могут быть переданы и в более ранних версиях, но используют другой синтаксис. – Matthew

+0

Это выглядит хорошо, но что, если аргумент должна быть либо сегодняшняя дата, либо, возможно, произвольная? Внутри программы я бы использовал date = system («date +% F»), а затем установил дату выхода. «.png», чтобы получить сегодняшнюю дату. – SDsolar

+0

@SDsolar Попробуйте с 'gnuplot -c script.gp "$ (date +% F)". Это установит 'ARG1' в качестве даты (используйте его как' ARG1. ". png" 'внутри скрипта) – vagoberto

Смежные вопросы