2015-10-31 2 views
3

Я хотел бы передать данные в gnuplot и построить его без ввода командной строки gnuplot или предоставления существующего файла сценария. Например, один лайнер, такой как cat datafile | gnuplot и см. График. Предположим, что файл данных хорошо отформатирован, например два простых столбца числовых данных, разделенных вкладкой или пространством.gnuplot plotting using piped input

Как это было бы немедленно закрыть, даже если оно будет работать (а это не так), но это может быть разрешено с опцией -persist (сокращенно -p).

По существу я хотел бы следующую строку кода, чтобы работать, или, чтобы понять, почему это не так и как изменить его для работы: echo -e "1 3\n2 4\n3 5" | gnuplot -p <<< "plot '-'"

я могу получить что-то работает с опцией -e, но это кажется, часто ломается для меня, как только я начинаю делать более сложные команды построения, и я не понимаю, что именно делает этот параметр, поэтому я бы предпочел просто написать короткий файл сценария, используя heredoc, как было сделано выше. Это работает: echo -e "1 3\n2 4\n3 5" | gnuplot -p -e "plot '-'"

Почему данные столбца, которые передаются в gnuplot, просто зарисовываются, даже при использовании синтаксиса plot '-', чтобы запросить, чтобы этот график взял данные из stdin?

+0

'-e' сообщает gnuplot выполнить следующий код. Это просто. Я не понимаю, какова ваша фактическая проблема: у вас есть рабочий фрагмент. – Christoph

+0

Я не хочу зависеть от опции -e, это идея. Я предпочел бы просто использовать фактический файл сценария, но в форме heredocument. Затем код должен выполняться из команд heredoc gnuplot, а не из -e; но это не сработает. Это то, что я хотел бы понять и сделать работу. Спасибо –

+0

Скорее всего, проблема в том, что я пытаюсь понять, как передавать данные во время подачи сценария в качестве heredoc. Например, следующие работы: «gnuplot -p <<< script», но когда также происходит пересылка данных в виде следующих данных: «данные кота» gnuplot -p <<< script'. Есть ли способ одновременно использовать сценарий heredoc и данные о трубах? –

ответ

0

Вы хотите направить 2 разных потока на gnuplot: команды данных и графика. Гнуплот берет только один. Тогда почему бы просто не объединить сюжетные команды и данные?

cat > file << . 
plot '-' using (\$1):(\$2) 
1 2 
2 3 
3 4 
e 
. 

, а затем cat file | gnuplot -p.

Не забывайте избегать символов $, если они являются переменными gnuplot, а не переменными оболочки.

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