объединение нескольких файлов данных для построения на одном графике - PullRequest
2 голосов
/ 28 августа 2011

расширение вопроса, который я задал ранее, который можно найти здесь, построение нескольких (x, y) координат в одной кривой с помощью gnuplot .Я пытаюсь построить кривые Безье в gnuplot, используя 2 разных файла.Каждая (x, y) из первого файла образует кривую Безье, проходящую через точки из второго файла.Первый файл имеет следующие координаты:

 x      y  
0.0    0.5     
0.12   0.1    
0.16   0.4    
0.2    0.35   
0.31   0.8    
0.34   0.6   
0.38   1.0    
0.46   0.2   
0.51   0.7    
0.69   0.9    

Второй файл имеет следующие координаты:

 x      y
0.00   0.7
0.04   0.74073082208
0.08   0.85926917792 
0.12   0.9 
0.16   0.9
0.2    0.9  
0.24   0.749720623086
0.28   0.874229601255
0.32   0.74073082208
0.36   0.8 
0.4    0.721178508605 
0.44   0.878821491395
0.48   0.761772990545
0.52   0.700774803388
0.56   0.723771273415
0.6    0.789508073675
0.64   0.864014272269
0.68   0.896743348931

Теперь, как мне объединить эти двафайлы для построения одного графика.Эти два файла не имеют одинаковое количество строк, но я думаю, это не имеет значения.Первая кривая будет между (x1, y1) и (x2, y2) от первого файла, который будет продолжаться до (x10, y10).На кривой между (x1, y1) и (x2, y2);точки (x1, y1), (x2, y2) и (x3, y3) из второго файла лежат.

Я перешел по этой ссылке http://t16web.lanl.gov/Kawano/gnuplot/datafile3-e.html, чтобы отсортировать и объединить два файла, но получил несколько странных строк, что совершенно неправильно.Эти значения должны на самом деле построить кривые Безье, но не получить график.Я написал следующий скрипт gnuplot для построения составных данных:

set term x11 persist
set title "Animation curves"
set xlabel "Time (secs.)"
set ylabel "Parameter"
set x2label "Phoneme1" offset -35
set pointsize 2
set key off
set style line 2 lt 0 lc 1 lw 2
set xrange [0.0:1.0]
set yrange [0.0:1.3]

plot [0.0:0.8] "< cat -n file1.dat" u 1:2 smooth csplines ls 1, "" u 1:(0.0):(0):(1.3) w vectors nohead ls 2, "" u ($1+0.005):(1):(sprintf("P %d", $0)) w labels, \
           "file1.dat" u 1:2 with points, \
           "file2.dat" u 1:2 with points, \    

Я получил следующую ошибку:

plot "< cat -n file1.dat" u 1:2 smooth csplines ls 1, "" u 1:(0.0):(0):(1.3) w vectors    nohead ls 2, "" u ($1+0.005):(1):(sprintf("P %d", $0)) w labels, "file1.dat" u 1:2 with points, "file2.dat" u 1:2 with points,                  
                          ^
"plot.gp", line 21: Cannot smooth: no data within fixed xrange!

1 Ответ

4 голосов
/ 14 сентября 2011

Сценарий ниже работает на моей машине.Может быть, это даже то, что вы ищете ...

set term x11 persist
set title "Animation curves"
set xlabel "Time (secs.)"
set ylabel "Parameter"
set x2label "Phoneme1" offset -35
set pointsize 2
set key off
set style line 2 lt 0 lc 1 lw 2
set xrange [0.0:1.0]
set yrange [0.0:1.3]

plot [0.0:0.8] "< cat file1.dat file2.dat | sort -n" u 1:2 smooth csplines ls 1, \
                         "" u 1:(0):(0):2 w vectors nohead ls 2, \
                         "" u ($1 + 0.005):(1):(sprintf("P %d", $0)) w labels, \
                         "file1.dat" u 1:2 w p, \
                         "file2.dat" u 1:2 w p 
...