Я использую gnuplot и у меня есть данные, которые имеют более 2 параметров. Я не хочу использовать трехмерные графики. Поэтому я разделю данные на несколько строк на одном графике.
Мои данные выглядят так, в одном случае:
#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
... ... ...
Первый - это количество потоков, которые я использую, второй - размер буфера, а последний - время использования этой операции.
Мне нужен один график, где размер буфера равен 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
Моя главная проблема сейчас в том, что все графики правильные, но между линиями они не будут. Я прочитал из руководства под командой «использование» главу, что:
Следует отметить, что сюжет 'le', сюжет 'le', используя 1: 2, и сюжет
'le' с использованием ($ 1): ($ 2) может быть слегка отличным: 1) если в файле есть несколько строк
с одним столбцом, а некоторые с двумя, первый будет изобретать значения х, когда
они отсутствуют, второй будет спокойно игнорировать строки с одним
столбец, а третий будет хранить неизмененное значение для строк с одним
точка (так, чтобы на графике с линиями ни одна линия не соединяла точки через
плохой момент); 2) если строка содержит текст в первом столбце, первый
прервет сюжет по ошибке, но второй и третий должны
спокойно пропустить мусор.
Я думаю, что я нахожусь в третьей категории, и нет никаких линий, потому что у каждого графика есть 4 недопустимых участка между ними, но я не могу найти способ исправить это.
Я не могу найти способ игнорировать недействительные графики. И, похоже, я не смог найти какой-либо способ предварительной обработки, который мог бы удалить неиспользуемые участки. Но я, наверное, что-то упустил.