2

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

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

也就是说,每条线上都有一个 3 维点。

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

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

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

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

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

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

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

4

1 回答 1

2

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

在 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
于 2012-10-06T07:17:25.947 回答