Есть ли способ итеративно извлекать данные из нескольких файлов и отображать их на одном графике в gnuplot. Предположим, у меня есть такие файлы, как data1.txt, data2.txt ...... data1000.txt; у каждого одинаковое количество столбцов. Теперь я мог написать что-нибудь вроде-
plot "data1.txt" using 1:2 title "Flow 1", \
"data2.txt" using 1:2 title "Flow 2", \
.
.
.
"data1000.txt" using 1:2 title "Flow 6"
Но это было бы действительно неудобно. Мне было интересно, есть ли способ пройти через сюжетную часть в gnuplot.
bash
функция в ответе нижеОтветы:
Конечно, есть (в gnuplot 4.4+):
Переменную
i
можно интерпретировать как переменную или строку, поэтому вы можете сделать что-то вродеесли вы хотите, чтобы линии были смещены друг относительно друга.
Введите
help iteration
в командной строке Gnuplot для получения дополнительной информации.Также не забудьте увидеть ответ @DarioP о
do for
синтаксисе; это дает вам нечто более близкое к традиционномуfor
циклу.источник
Взгляните также на
do { ... }
команду, начиная с gnuplot 4.6, поскольку она очень мощная:http://www.gnuplotting.org/gnuplot-4-6-do/
источник
help do
.У меня есть скрипт all.p
Здесь две последние строки буквальные, а не эвристические. Тогда я бегу
Измените
*.dat
тип файла, который у вас есть, или добавьте типы файлов.Следующий шаг: добавьте в ~ / .bashrc эту строку
и поместите файл в
all.p
домашний каталог и вуаля. Вы можете отобразить все файлы в любом каталоге, набрав p и введите.ИЗМЕНИТЬ Я изменил команду, потому что она не сработала. Ранее он содержал
list(i)=word(system(ls -1B *.dat),i)
.источник
list=system(ls -1B *.dat)
Вместо этого мне пришлось писать .list=system('ls -1B *.dat')
Используйте следующее, если у вас есть отдельные столбцы для построения графика
источник
Я хотел использовать подстановочные знаки для отображения нескольких файлов, часто помещаемых в разные каталоги, при работе из любого каталога. Решение, которое я нашел, заключалось в создании следующей функции в
~/.bashrc
и используйте его, например, как
plo *.dat ../../dir2/*.out
, чтобы отобразить все.dat
файлы в текущем каталоге и все.out
файлы в каталоге, который находится на уровень выше и называетсяdir2
.источник
plo() { [[ $# -eq 0 ]] && echo "Usage plo file1 file2 ..." || { .... } }
чтобы не звонитьgnuplot
без файлов.Вот альтернативная команда:
источник