2013-04-18 7 views
24

У меня есть файл, который содержит 4 числа (минимальный, макс, средний, стандартный вывод), и я хотел бы построить его с помощью gnuplot.gnuplot: построение файла с 4 столбцами по оси y

Пример:

24 31 29.0909 2.57451 
12 31 27.2727 5.24129 
14 31 26.1818 5.04197 
22 31 27.7273 3.13603 
22 31 28.1818 2.88627 

Если у меня есть 4 файлов с одного столбца, то я могу сделать:

gnuplot "file1.txt" with lines, "file2.txt" with lines, "file3.txt" with lines, "file4.txt" with lines 

И это будет сюжет 4 кривых. Меня не волнует ось x, она должна быть просто постоянным приращением.

Как я могу рассказать? Кажется, я не могу найти способ иметь 4 кривых с 1 файлом с 4 столбцами, просто имея постоянно увеличивающееся значение x.

спасибо.

+0

Один из способов я думал сделать, это поставить инкрементный счетчик на левой стороне, а затем использовать с помощью 1: 2, с использованием 1: 3 .... но, возможно, есть способ без дополнительной колонки, пожалуйста? – user1777907

ответ

63

Вы можете построить различные столбцы одного и того же файла, как это:

plot 'file' using 0:1 with lines, '' using 0:2 with lines ... 

(... означает продолжение). Несколько примечаний в этой нотации: using указывает, какой столбец для графика, то есть столбец 0 и 1 в первом операторе using, 0-й столбец представляет собой псевдо-столбец, который переводит в текущий номер строки в файле данных. Обратите внимание, что если используется только один аргумент с using (например, using n), он соответствует сообщению using 0:n (спасибо, что указали, что вне mgilson).

Если Gnuplot версия достаточно недавно, вы могли бы построить все 4 колонки с для цикла:

set key outside 
plot for [col=1:4] 'file' using 0:col with lines 

Результат:

for-loop plot

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

min max mean std 
24 31 29.0909 2.57451 
12 31 27.2727 5.24129 
14 31 26.1818 5.04197 
22 31 27.7273 3.13603 
22 31 28.1818 2.88627 

и

set key outside 
plot for [col=1:4] 'file' using 0:col with lines title columnheader 

Результаты в:

for-loop plot with column headers

+5

Я считаю, что '0' необязательно на самом деле ...' plot для [col = 1: 4] 'foo', используя col' - Это просто FYI. Я действительно предпочитаю сценарий с ним там. – mgilson

+0

@mgilson: Хороший момент, я добавлю его в качестве опоры. – Thor

+0

Спасибо вам большое! Это прекрасно, очень проницательно. Помог мне много! – user1777907

11

Просто добавить, что вы можете задать приращение для цикла в качестве третьего аргумента. Это полезно, если вы хотите построить каждый n-й столбец.

plot for [col=START:END:INC] 'file' using col with lines 

В этом случае ничего не меняет, но в любом случае:

plot for [col=1:4:1] 'file' using col with lines 
Смежные вопросы