LINUX.ORG.RU

gnuplot lines


0

1

Собственно, в одном файле идет сразу много графиков, различающихся числом в первом столбце. Но когда я строю графики в gnuplot, то я указываю 2-й и третий столбец (где собственно точки). И если я укажу with lines, то будет много лишних линий, соединяющих конец одного графика с началом другого. Как их убрать?

★★★★★

если можно точкой пожертвовать, то так:

#!/bin/bash

rm file.dat 2>/dev/null
function data()
{
  for((i=0;i<10;i++)); do
    for((x=0;x<20;x++)); do
      echo "$x $i"
    done
  done
}
data | awk '{print $2" "$1" "($1*$1*1.2+$1*$2*5+20)}' >>file.dat

gnuplot << EOF
plot 'file.dat' u 2:3 with lines
pause 2

last=-1
f(a,b)=(last==a)?b:(last=a,1/0);
plot 'file.dat' u (f(\$1,\$2)):3 with lines
pause 2
EOF

anonymous
()

если нужно обойтись без жертв:

#!/bin/bash

function data()
{
  for((i=0;i<10;i++)); do
    for((x=0;x<20;x++)); do
      echo "$x $i"
    done
  done
}
data | awk '{print $2" "$1" "($1*$1*1.2+$1*$2*5+20)}' >file.dat

function draw()
{
  a="plot"
  for i in $1; do
    echo -n "$a 'file.dat' u (f(\$1,$i,\$2)):3 with lines"
    a=","
  done
}
mplot="$(draw "0 1 2 3 4 5 6 7 8 9")"

gnuplot << EOF
plot 'file.dat' u 2:3 with lines
pause 2

last=-1
f(a,b)=(last==a)?b:(last=a,1/0);
plot 'file.dat' u (f(\$1,\$2)):3 with lines
pause 2

f(a,b,c)=(a==b)?c:1/0;
$mplot
pause 2
EOF

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.