2012-10-06 3 views
1

Je fichier de données dans le format suivant:une courbe 3D Traçage à partir du fichier de données

1,00000 2,00000 3,00000 
1,37864 1,83839 2,90917 
1,71932 1,75834 2,77034 
2,03327 1,75821 2,58788 
2,32958 1,83535 2,36475 
2,61380 1,98720 2,10290 
2,88682 2,21109 1,80385 
3,14388 2,50283 1,46933 
3,37385 2,85424 1,10207 
3,55891 3,25003 0,70675 
3,67565 3,66464 0,29077 
3,69810 4,06096 -0,13516 
3,60327 4,39280 -0,55697 
3,37826 4,61289 -0,95808 
3,02656 4,68499 -1,32117 
2,57023 4,59570 -1,63053 
2,04607 4,35956 -1,87439 
1,49686 4,01436 -2,04634 
0,96171 3,60912 -2,14556 
0,46928 3,19100 -2,17583 
... 

C'est, il y a un point 3 dimensions sur chaque ligne. Je veux tracer ces points comme une courbe dans l'espace 3D, donc ces points seraient connectés un par un en commençant par le premier avec des lignes droites.

Cependant, le programme gnuplot suivant ne fonctionne pas:

set xrange [-5:5] 
set yrange [-5:5] 
set ticslevel 0 
splot "data.dat" u 1:2:3 with lines 

Il donne des résultats très étranges: plot

On dirait que gnuplot pour une raison quelconque se rapproche toutes mes données avec points entiers. Je pensais qu'il se peut que mes données donnent vraiment cette image, cependant, quand j'ai demandé à gnuplot de ne tracer que des points au lieu de lignes, il n'a tracé que des points entiers, joints des lignes sur le graphique ci-dessus.

Pourquoi est-ce ainsi? Je ne pouvais pas forcer google à me donner une réponse. On dirait que personne ne s'intéresse au tracé des courbes dans l'espace 3D :)

+0

Une question utile, mais le titre est trompeur. Peut-être que quelque chose sur les points intégraux dans le titre irait mieux. –

Répondre

2

Vous devez remplacer coma par un point dans le fichier data.dat. Le séparateur décimal fait l'objet de paramètres régionaux dans la plupart des systèmes d'exploitation. Par exemple, c'est le coma pour la région Russie et le point pour les États-Unis et le Royaume-Uni.

sur les paramètres régionaux Linux peuvent être vérifiés avec locale utilitaire

locale -k LC_NUMERIC 
decimal_point="." 
thousands_sep="," 
grouping=3;3 
numeric-decimal-point-wc=46 
numeric-thousands-sep-wc=44 
numeric-codeset="UTF-8" 

L'une des possibilités de conversion sur les systèmes Unix est d'utiliser sed pour le fichier de modification en place

sed -i "s/,/./g" data.dat 
+0

Merci beaucoup, cela a fonctionné parfaitement! Comment pourrais-je l'oublier? –

Questions connexes