从数据文件绘制3D曲线

时间:2012-10-06 06:43:23

标签: plot gnuplot

我有以下格式的数据文件:

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
...

也就是说,每一行都有一个三维点。

我想将这些点绘制为3D空间中的曲线,因此这些点将从第一个点开始逐行连接。

但是,以下gnuplot程序不起作用:

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

它给出了非常奇怪的结果: plot

看起来gnuplot由于某种原因用积分点近似我的所有数据。

我认为可能是我的数据确实给出了这张图片,但是,当我要求gnuplot只绘制点而不是线时,它仍然只绘制了积分点,上图中线条的关节。

为什么会这样?我不能强迫谷歌给我一个答案。看起来没人对在3D空间中绘制曲线感兴趣:)

1 个答案:

答案 0 :(得分:2)

您应该在data.dat文件中用点替换昏迷。十进制分隔符是大多数操作系统中区域设置的主题。例如,它是俄罗斯地区的昏迷,美国和英国的地点。

在Linux上,可以使用locale实用程序

检查区域设置
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"

在类Unix系统上进行转换的可能性之一是使用sed来修改文件

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