gnuplot: создание нескольких коробочных графиков из разных файлов данных на одном выходе - PullRequest
2 голосов
/ 10 июля 2019

У меня есть набор файлов, которые содержат данные, для которых я хочу создать набор графиков для их сравнения. Я могу получить данные в gnuplot, но я не знаю правильный формат для разделения каждого файла на отдельный график.

Я попытался прочитать все необходимые файлы в переменную, которая работает, однако, когда создается график, все боксы расположены друг над другом. Мне нужно заставить gnuplot индексировать каждый график по одному пробелу для каждого нового файла данных.

Например, это производит вывод с наложением графиков:

FILES = system("ls -1 /path/to/files/*")

plot    for [data in FILES] data using (1):($4)  with boxplot notitle

Я знаю, что позиция X там явно указывается с помощью (1), но я не уверен, что заменить ее, чтобы получить позицию для перемещения для каждого графика. Это не проблема для других типов диаграмм, поскольку они не имеют одинакового поля для их размещения.

1 Ответ

1 голос
/ 11 июля 2019

Вы можете попробовать следующее.Вы можете получить доступ к файлу в вашем списке файлов по индексу через word(FILES,i).Проверьте help word и help words.Приведенный ниже код предполагает, что в вашем каталоге есть несколько файлов данных Data0*.dat.Возможно, есть более разумный / короткий способ реализации меток xtic.

Код:

### boxplots from a list of files
reset session

# get a list of files (Windows)
FILES = system('dir /B "C:\Data\Data0*.dat"')

# set tics as filenames
set xtics ()    # remove xtics
set yrange [-2:27]
do for [i=1:words(FILES)] {
    set xtics add (word(FILES,i) i) rotate by 45 right
}

plot for [i=1:words(FILES)] word(FILES,i) u (i):2 w boxplot notitle
### end of code

Результат:

enter image description here

...