2012-06-08 2 views
-1

Я хочу построить столбцы 3 и 4 с барами для каждого набора данных в файле, набор данных идентифицируется несколькими символами новой строки и передается с использованием индекса, как показано в ниже. Я могу нарисовать эти данные с помощью «linepoint». Мой график выглядит как my graph. Но я хочу построить данные с «ящиками» как I want graph like this.gnuplot для построения множественного набора данных из файла и группировки всех этих баров

Ось X будет иметь столбец 3 (1,2,3), а ось y будет иметь столбец 4. Для каждого значения x (1,2,3) должно быть 2 бара, одно из индекса 0 и второй из индекса 1.

файл данных выглядит следующим образом:

2-100

2 100 1 3,10 249

2 100 2 3,41 250

2 100 4 3,70 249

3-100

3 100 1 3,10 252

3 100 2 3,48 252

3 100 4 3,72 254

2-100 об 3-100 будет использоваться как заголовок «первая строка блока и первый столбец», первые 4 строки считаются «индексом o» в сценарии и вторыми 4 строками как «индекс 1»

сценарий я использовал:

plot \ 

    "$1" index 0 using 3:4 with boxes fs solid title columnhead(1),\ 

    "$1" index 1 using 3:4 with boxes fs solid title columnhead(1) 
+0

Я немного запутанный - «набор данных идентифицируются путем многократного перехода на новую строку», но это будет означать, что каждая строка, указанная выше, представляет собой новый набор данных. Возможно, это то, что вы имели в виду, но мне сложно понять, чего вы пытаетесь достичь. (Я прочитаю об этом еще раз или два и надеюсь, что смогу это выяснить). – mgilson

ответ

2

Я переформатировать ваш файл данных немного (по крайней мере, если я правильно понял ваш первоначальный вопрос) - это теперь выглядит следующим образом:

2-100 
2 100 1 3.10 249 
2 100 2 3.41 250 
2 100 4 3.70 249 


3-100 
3 100 1 3.10 252 
3 100 2 3.48 252 
3 100 4 3.72 254 

вы должны быть в состоянии отформатировать файл данных, как это с помощью sed:

sed -e '/^$/ d'   -e '/[0-9]-100/{x;p;p;x}'    datafile.dat 
#  #remove all newlines #reinsert newlines where appropriate 

(это предполагает, что столбец ч eads всегда начинаются с числа (0-9), а затем «-100». Возможно, вам потребуется немного интереснее, если ваш файл данных немного сложнее.

Это может быть построена с использованием:

set yrange [0:*] 
set style fill solid 
plot for [i=0:1] 'test2.dat' index i u ($3+i*0.25):4:(0.25) w boxes title columnhead(1) 

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

Если вы хотите специальные этикетки, вы может это сделать

set xtics scale 0,0 format "" 
set xtics ("This is at 1" 1, "this is at 2" 2, "this is at 3" 3) 

перед вашей командой участка.

Вот что я получаю, используя выше с PNG (LibGD) терминала:

enter image description here

+0

Да, данные выглядят так, как вы отредактировали. Посмотрите мой график, как я построил (https://sites.google.com/site/gkumarpatel/_/rsrc/1339163683719/links/sapmple.jpg). Мне просто нужны поля вместо «linespoints», как показано на рисунке (http://i.imgur.com/zAzfv.png). Для каждого значения по оси x (1,2,4) мне нужны два поля, 1 для первого набора данных, 1 для второго набора. – GauravKumar

+0

@ user1444593 - Вы попробовали материал gnuplot, который я разместил выше? Он создает две коробки в 1, два ящика в 2 и два ящика в 4. с файлом данных, отформатированным, как я выше. Я также показал, как вы можете переформатировать его с помощью 'sed', чтобы соответствовать тому, что у меня выше (если это уже не так). – mgilson

+0

Да, я написал материал, отправленный. И мои данные уже похожи на то, что «sed» переформатирует. И это то, что я получаю после печати данных (https://sites.google.com/site/gkumarpatel/links/sapmple.jpg). – GauravKumar

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