2012-03-04 1 views
3

Я использую gnuplot и имею некоторые данные, которые имеют более двух параметров. Я не хочу использовать 3D-графики. Поэтому я разделил данные по нескольким строкам на одном и том же участке.Нужно построить каждую n-ю строку в gnuplot

Мои данные выглядит следующим образом, в одном случае:

#k #N #time 
1 1 0.000556134 
2 1 0.00099 
4 1 0.00201011 
8 1 0.00376214 
16 1 0.00675843 
1 2 0.000717646 
2 2 0.000794106 
4 2 0.0016033 
8 2 0.0033602 
16 2 0.00795338 
1 4 0.000476448 
...  ...  ... 

-первых, это количество потоков я использую, второй является размер буфера, а последний раз использовать на этом opperation.

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

 reset 
     set autoscale # scale axes automatically 
     unset log  # remove any log-scaling 
     unset label  # remove any previous labels 
     set xtic auto # set xtics automatically 
     set ytic auto # set ytics automatically 
     #set logscale x 2 
     #set logscale y 2 
     set rmargin 10 
     set bmargin 5 
     set tmargin 5 
     set key left top 
     set title 
     set term png giant size 1500, 800 crop 

     set title "Adapter Stream Input" font "verdana, 20" 
     set xlabel "Buffer Size" font "verdana, 20" 
     set ylabel "Time in Seconds" font "verdana, 20" 

     set key right bottom spacing 4 width 5 height 5 font "verdana, 15" 

     set output "AdapterStreamInputTests.png" 

     plot "AdapterStreamInputTests.txt" using ($1 == 1 ? $2 : 1/0):($1 == 1 ? $3 : 1/0) title '1 Stream' with linespoints ls 1 linecolor rgb "blue", \ 
     "AdapterStreamInputTests.txt" using ($1 == 2 ? $2 : 1/0):($1 == 2 ? $3 : 1/0) title '2 Stream' with linespoints ls 1 linecolor rgb "red", \ 
     "AdapterStreamInputTests.txt" using ($1 == 4 ? $2 : 1/0):($1 == 4 ? $3 : 1/0) title '4 Stream' with linespoints ls 1 linecolor rgb "yellow", \ 
     "AdapterStreamInputTests.txt" using ($1 == 8 ? $2 : 1/0):($1 == 8 ? $3 : 1/0) title '8 Stream' with linespoints ls 1 linecolor rgb "brown", \ 
     "AdapterStreamInputTests.txt" using ($1 == 16 ? $2 : 1/0):($1 == 16 ? $3 : 1/0) title '16 Stream' with linespoints ls 1 linecolor rgb "pink" 

set output 

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

Следует отметить, что сюжет «ль», участок «ль» с использованием 1: 2, и сюжета «ль», используя ($ 1): ($ 2) может быть тонко дробным: 1) если у le есть некоторые строки с одним столбцом, а некоторые с двумя, то первые будут изобретать значения x, когда они отсутствуют, второй будет спокойно игнорировать строки с одним столбцом , а третий сохранит неизмененное значение для строк с одной точкой (так что на графике с линиями ни одна строка не соединяет точки по плохой точке ); 2) если строка содержит текст в первом столбце, первый прервет график по ошибке, а второй и третий должны спокойно пропустить мусор.

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

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

ответ

5

У вас есть два варианта.

1.) Используйте каждую команду, как показано here, alternative link (wayback machine)

2.) Используйте отсутствующий параметр, в котором, как описано выше, использование в: обозначение предварять символ. Более подробно снова на большом inofficial FAQ, alternative link (wayback machine)

+0

Спасибо, каждый сделал это, очень удобный инструмент. Снимки выглядят следующим образом: – RobbingDaHood

+0

сюжет «AdapterStreamInputTests.txt» каждые 5 :: 0 с использованием заголовка 2: 3 «1 поток» с линиями ls 1, \ \t \t «AdapterStreamInputTests.txt» каждые 5: 1 с использованием 2: 3 название '2 поток' с linespoints 2 Ls, \ \t \t "AdapterStreamInputTests.txt" каждый 5 :: 2, используя 2: 3 название '4' поток с linespoints 3 Ls, \ \t \t "AdapterStreamInputTests.txt" каждый 5 :: 3 с использованием заголовка 2: 3 «8 Стрим» с точками линий ls 4, \ \t \t «AdapterStreamInputTests.txt» каждые 5 :: 4 с использованием заголовка 2: 3 '16 Stream 'с линией точек ls 5 – RobbingDaHood

+0

@ Azrael3000 Ссылка есть вы можете написать одно или два предложения о «каждом»? Таким образом, ответ бесполезен ... – turbo