2011-08-08 3 views
1

J'ai valeurs x et y dans un fichier de données pour tracer des courbes de Bézier. Chaque paire (x, y) indique une courbe de Bézier. Maintenant, je dois séparer les segments dessinant des lignes verticales (lignes pointillées de préférence). Les segements doivent être à chaque (x, y) de telle sorte que les multiples courbes de Bézier sont séparées et peuvent être analysized. Le fichier d'entrée est inférieur:dessin des lignes verticales entre les deux courbes de Bézier

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 

Le script pour GNUPlot est:

set term x11 persist 

set title "Animation curves" 

set xlabel "Time (secs.)" 

set ylabel "Parameter" 

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

Comment puis-je réaliser? Je vous remercie.

Répondre

2

Vous pouvez utiliser des vecteurs pour dessiner les lignes de séparation. Le script suivant devrait faire le travail:

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: Makes le mot-clé notitle redondant pour toutes les parcelles
  • set style line 2 lt 0 lc 1 lw 2: Discribes comment les lignes de séparation devrait ressembler. Dans ce cas:

    • lt 0: pointillés
    • lc 1: rouge
    • largeur de ligne lw 2 de 2
  • "" u 1:($2-0.1):(0):(0.2) w vectors nohead ls 2: emplacements En fait, les lignes de séparation:

    • "" utilisation le previou sly utilisé le fichier de données
    • u 1:($2-0.1):(0):(0.2): Plot le vecteur entre les positions (x, y - 0.2) et (x, y + 0.2) du fichier de données.
    • w vectors nohead: Utilisez des vecteurs et laissez-les sans tête.
    • ls 2: Utilisez le style de ligne définie précédemment 2.

Un problème que vous pourriez avoir, est que dans votre fichier de données, il y a à la position 0.06 deux valeurs définies, qui permettent gnuplot prendre la moyenne des ces deux valeurs. Ceci est la raison pour laquelle la ligne de séparation à la position x=0.06 est plus longue que dans d'autres positions, comme vous pouvez le voir dans le graphique suivant:

Result of the script above

+0

Merci. J'ai réalisé qu'il y a deux valeurs dans 0.06 ce qui ne devrait pas être le cas. Mais ces valeurs sont la sortie des calculs mathématiques effectués, donc je dois vérifier et demander à mon tuteur à ce sujet. Est-il également possible d'avoir les lignes tirées de la ligne de frontière de haut en bas? – zingy

+0

Et aussi je dois étiqueter chaque segment sur le dessus. Je vous remercie. – zingy

+0

@cvani Pour aller de haut en bas modifier le '" "u 1: ($ 2-0.1) :(0) :(0.2) w vecteurs nohead ls 2 'en accord. Aussi 'set xrange' et' set yrange' pourraient être utiles ici. Pour étiqueter les lignes, voir la documentation [this] (http://www.gnuplot.info/docs_4.2/gnuplot.html#x1-19500043.29). – Woltan

Questions connexes