2013-08-08 4 views
2

У меня есть 4 разных файла данных (для сезонов) и уже удалось создать ящики с медианными и другими.Вычисление медианных значений разных файлов данных (с помощью gnuplot)

Но теперь я хотел бы показать разработку в течение сезонов простой строкой. Я хочу, чтобы gnuplot отображал медианные значения (и, возможно, квартили или стандартные отклонения) из 4 сезонов и соединял их через линии.

Значения находятся в 4 отдельных файлах данных в одном столбце - для каждого столбца имеется одна медиана (и кварты ...). Я также хочу игнорировать первые несколько записей.

Я попробовал команду stats, но я всегда получаю ошибку здесь:

stats 'VARIANTE 1\Habitate\Äschen\Vergleich\FRU\WUA_Vergleich.dat' u 2 every ::5 label "Ist_FRU" 
stats 'VARIANTE 1\Habitate\Äschen\Vergleich\SOM\WUA_Vergleich.dat' u 2 every ::5 label "Ist_SOM" 
stats 'VARIANTE 1\Habitate\Äschen\Vergleich\HER\WUA_Vergleich.dat' u 2 every ::5 label "Ist_HER" 
stats 'VARIANTE 1\Habitate\Äschen\Vergleich\WIN\WUA_Vergleich.dat' u 2 every ::5 label "Ist_WIN" 

Я определил специальный xtics здесь:

set xtics ("Fru" 1, "Som" 2, "Her" 3, "Win" 4) scale 0.0 out font ",9" 

, а затем хотел построить эти данные:

plot \ 
(1):median_Ist_FRU notitle linestyle 1, \ 
(2):median_Ist_SOM notitle linestyle 1, \ 
(3):median_Ist_HER notitle linestyle 1, \ 
(4):median_Ist_WIN notitle linestyle 1 

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

Заранее благодарен!

ответ

0

Вы используете неправильный синтаксис для команды stats (было бы полезно, если бы вы предоставили сообщение об ошибке). Вы должны использовать name, остальные удобства:

tmpl = 'VARIANTE 1\Habitate\Äschen\Vergleich\%s\WUA_Vergleich.dat' 
stats sprintf(tmpl, "FRU") u 2 every ::5 name "Ist_FRU_" 
stats sprintf(tmpl, "SOM") u 2 every ::5 name "Ist_SOM_" 
stats sprintf(tmpl, "HER") u 2 every ::5 name "Ist_HER_" 
stats sprintf(tmpl, "WIN") u 2 every ::5 name "Ist_WIN_" 

заговорщической часть немного сложнее:

reset 
# these are some test values 
Ist_FRU_median = 1 
Ist_SOM_median = 0.5 
Ist_HER_median = 1.5 
Ist_WIN_median = 1.2 

set xtics ("Fru" 1, "Som" 2, "Her" 3, "Win" 4) scale 0.0 
quartil="FRU SOM HER WIN" 
set samples 4 
set xrange[0.8:4.2] 
plot '+' using ($0+1):(value('Ist_'.word(quartil, int($0+1)).'_median')) with linespoints title '' 

Грубое объяснение сценария: Обычно Gnuplot можно соединить точки линиями только тогда, когда они появляются в тот же файл данных.

Для имитации этого я использовать специальное имя файла +, который генерирует число выборок в указанном диапазоне (The xrange должен быть установлен для того, чтобы использовать +). Я использую четыре образца (set samples 4), номер текущего образца можно получить с помощью $ 0 (или столбца (0)) в операторе using. Номер образца идет от 0 до 3.

quartil содержит четыре слова, которые затем извлекаются для построения имени переменной. Первое слово имеет индекс 1, поэтому я использую word(quartil, $0+1).

Если имя переменной известно как строка, к ее значению можно обратиться по адресу value(string).

Результат с данными испытаний: enter image description here