рисование вертикальных линий между кривыми Безье - PullRequest
1 голос
/ 08 августа 2011

У меня есть значения x и y в файле данных для построения кривых Безье. Каждая пара (x, y) обозначает кривую Безье. Теперь мне нужно разделить сегменты, рисуя вертикальные линии (желательно пунктирные линии). Сегменты должны быть в каждом (x, y), чтобы множественные кривые Безье были разделены и могли быть проанализированы. Входной файл ниже:

0.07     0.543022222222 

0.06     0.694821399177 

0.08     0.734375 

0.12     0.743377777778 

0.11     0.795822222222 

0.09     0.772946197226 

0.14     0.798727048915 

0.05     0.6118208 

0.06     0.517422222222   

Сценарий для gnuplot:

set term x11 persist

set title "Animation curves"

set xlabel "Time (secs.)"

set ylabel "Parameter"

plot "curve.dat" using 1:2 notitle smooth csplines

Как мне этого добиться? Спасибо.

1 Ответ

2 голосов
/ 08 августа 2011

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

set key off
set style line 2 lt 0 lc 1 lw 2
plot [0.04:0.15] "Data.csv" u 1:2 smooth csplines ls 1, "" u 1:($2-0.1):(0):(0.2) w vectors nohead ls 2
  • set key off: делает ключевое слово notitle избыточным для всех графиков
  • set style line 2 lt 0 lc 1 lw 2: описывает, как должны выглядеть разделительные линии. В этом случае:

    • lt 0: пунктир
    • lc 1: красный
    • lw 2 ширина линии 2
  • "" u 1:($2-0.1):(0):(0.2) w vectors nohead ls 2: Фактически прокладывает линии разделения:

    • "" использовать ранее использованный файл данных
    • u 1:($2-0.1):(0):(0.2): нанесите вектор между позициями (x, y - 0.2) и (x, y + 0.2) файла данных.
    • w vectors nohead: используйте векторы, и пусть у них нет головы.
    • ls 2: использовать ранее определенный стиль линии 2.

Проблема, с которой вы можете столкнуться, заключается в том, что в вашем файле данных в позиции 0.06 определены два значения, которые позволяют gnuplot принимать среднее значение этих двух значений. Вот почему разделительная линия в позиции x=0.06 длиннее, чем в других позициях, как вы можете видеть на следующем графике:

Result of the script above

...