2

我有大量的 x、y、z 点(8000 个点),其中 x 和 y 是固定的,并且 z 坐标在每个时间步长(大约 100 个时间步长)发生变化。每个时间步长都有一个单独的数据文件(x,y ,z) 对于每个时间步。为每个文件绘制这些数据点以显示 z 坐标及时变化的最佳方法是什么?可以在每个时间步生成 3D 表面/散点图,并使用这些 gif/bmp 文件制作视频文件。我可以使用绘图软件在每个时间步绘制 x、y、z,但是手动执行 100 次会很乏味。你能建议我在 R 和 gnuplot 中做到这一点吗?我想创建像这里链接的图片文件。 http://dl.dropbox.com/u/9267983/stack/1.gif

谢谢

例如我在特定时间的数据集 = 1.0 分钟

         4.00      4.00    126.6310
         8.00      4.00    126.3585
        12.00      4.00    126.1797
        16.00      4.00    126.0514
        20.00      4.00    125.8081
        24.00      4.00    125.3174
        28.00      4.00    124.6824
        32.00      4.00    124.0422
        36.00      4.00    123.4376
        40.00      4.00    122.8637
        44.00      4.00    122.4779
        48.00      4.00    122.4673
        52.00      4.00    122.4825
        56.00      4.00    122.2762
        60.00      4.00    122.5483
        64.00      4.00    122.0322
        68.00      4.00    122.5442
        72.00      4.00    122.2031
        76.00      4.00    122.4452
        80.00      4.00    122.3936
        84.00      4.00    122.4258
        88.00      4.00    122.4239
        92.00      4.00    122.4239
        96.00      4.00    122.4226
4

2 回答 2

4

在 R 中,最适合参数化绘图的 3D 选项是rgl包。

require(rgl)
x=sin( (1:100)/10 )
 y=cos( (1:100)/10 )
 z=(1:100)/100
 lines3d(x,y,z)
 #after rotation with cursor controls
 rgl.postscript("spiral.ps""
 # and conversion to a png file

在此处输入图像描述

给我们50-100分,我们可以用真实数据来证明!

于 2012-12-25T02:50:02.070 回答
1

根据您的样本数据,我生成了一组假数据并生成了一系列图并将它们保存为单独的图像(按顺序命名)。可以使用 ImageMagick、QuickTime Pro、GIMP 或任何其他功能强大的图形编辑器将此类图像转换为动画 gif 或电影文件。

在此处输入图像描述

下面是我的 gnuplot 代码。请注意,do-loops 是在 gnuplot 4.6 版中新引入的,在早期版本中不起作用。使用旧版本的 gnuplot,您可以使用外部 shell 脚本多次运行相同的脚本,同时更改输出文件名和数据文件名以产生相同的结果。

set term pngcairo
set palette defined ( 0    '#000fff',\
                      0.99 '#000fff',\
                      1    '#90ff70',\
                      1.99 '#90ff70',\
                      2    '#ee0000',\
                      2.99 '#ee0000')
set ticslevel 0
set view 51,120

do for [t=0:29] {
  set output sprintf("%d.png", t)
  splot sprintf("< awk '{if ($2!=prev) print ; prev=$2; print $0}' %d.dat", t) w p pt 7 linecolor palette notitle
}
于 2012-12-25T21:34:10.340 回答