2016-03-02 3 views
1

В GNUPLOT я хотел бы построить 5 значений на одной гистограмме, разделенной промежутком между ними. Если у меня есть данные в формате, например:Явное значение x для построения в gnuplot

3342336, 3375103, 7110653, 32770, 0

где эти 5 значения у-значения, как я могу указать X-значения от себя для того, где они должны принадлежать?

Например, я хотел бы мою гистограмму, чтобы каждая запись иметь длину 1, поэтому я сюжет у-значение 3342336 при й значении 1, у-значения 3375103 при х-значении 3, y- значение 7110653 при х-значение 5, у-значение 32770 при й-значении 7, и у-значения 0 при й-значении 9.

Я оценил бы любой пример код, который может достичь этого. Благодарю.

+0

Предполагается ли, что данные находятся в нескольких строках или действительно ли они отформатированы как одна разделенная запятыми строка? – Matthew

ответ

1

Если ваши данные в одной строке, как показано на рисунке, вы можете достичь этого, используя график для цикла синтаксиса по индексу столбца и вычисления значения x из этого индекса. Мы можем захватить столбец с помощью столбца , который получает указанный номер столбца.

set boxwidth 1 
set datafile separator comma # only if data is comma separated 
plot for [i=1:5] (2*i-1):(column(i)) with boxes 

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

plot for [i=1:5] (2*i-1):(column(i)) with boxes lt 1 

enter image description here

Кроме того, если ключ будет создан, и мы не хотим каждый сюжет о генерировать один, мы можем проверить и дать только название непустое на первой итерации (пустой заголовок обрабатывается так же, как и название).

plot for [i=1:5] (2*i-1):(column(i)) with boxes lt 1 title (i==1)?"Title":"" 

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

В Gnuplot имеется несколько псевдоокусов (см. help pseudocolumns). В вашем случае представляет интерес столбец 0. Столбец 0 дает номер строки данных, начинающихся с 0. Таким образом, чтобы получить последовательные нечетные числа, подобные этому, вы можете использовать 2*$0+1.

Например, если ваши данные (хранящиеся в datafile.txt) выглядит

3342336 
3375103 
7110653 
32770 
0 

и вы хотите, чтобы построить коробки длины 1 при тех значениях, вы можете сделать

set boxwidth 1 
plot "datafile.txt" u (2*$0+1):1 with boxes 
+0

Что делать, если мои данные находятся в столбцах следующим образом: > 3342336 3375103 7110653 32770 0 То, что я не могу реорганизовать его в своем исходном файле данных, чтобы все вписывалось в один столбец. Есть ли простой способ сообщить gnuplot прочитать каждый столбец формулой (2 * $ 0 + 1): 1? –

+0

@Howard См. Первую часть моего отредактированного ответа. – Matthew

+0

Спасибо, Мэтью! –

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