R 脚本 - 通过几个 X、Y、Z 点的插值生成 3D 表面
R Script - 3D Surface via Interpolation of several X,Y,Z points
我想使用 R 并让它消耗我拥有的少数 X、Y、Z 数据点(图像中的黑点),然后生成 300x300 XYZ 点来表示所见的 3D 曲面图在图像中着色。我希望输出简单为三列,即 X、Y 和 Z 点。我尝试了以下方法,但它似乎没有生成我需要的数据。我需要 X、Y、Z 点在另一个程序 (spotfire) 中生成图像,不需要在 R 中做任何图形。任何帮助将不胜感激!谢谢
> require(akima)
> points = read.csv("points.csv", header = TRUE)
> print(points)
x y z
1 400.01 650.01 2.70
2 150.00 780.00 3.40
3 250.00 780.00 3.10
4 800.00 700.00 1.00
5 1000.00 680.00 1.00
6 1500.00 680.00 0.75
7 1700.00 700.00 1.00
8 1700.00 790.00 1.25
9 1600.00 1000.00 1.20
10 1750.00 1000.00 1.00
11 1800.00 1650.00 0.60
12 1400.00 1650.00 0.65
13 1000.00 1650.00 0.80
14 500.00 1650.00 0.90
15 150.00 1650.00 1.30
16 150.00 1050.00 3.90
17 500.00 1000.00 3.00
> s=interp(points$x,points$y,points$z,xo=seq(min(points$x),max(points$x),length=300),yo=seq(min(points$y),max(points$y),length=300))
对我有用。我认为您需要做的就是将最终列表转换为矩阵。
s1 <- interp2xyz(s)
dim(s1)
# [1] 90000 3
很多点为z值生成一个NA值
sum(is.na(s1[,3]))
# [1] 4897
您可以选择排除这些点或使用外推法。
我想使用 R 并让它消耗我拥有的少数 X、Y、Z 数据点(图像中的黑点),然后生成 300x300 XYZ 点来表示所见的 3D 曲面图在图像中着色。我希望输出简单为三列,即 X、Y 和 Z 点。我尝试了以下方法,但它似乎没有生成我需要的数据。我需要 X、Y、Z 点在另一个程序 (spotfire) 中生成图像,不需要在 R 中做任何图形。任何帮助将不胜感激!谢谢
> require(akima)
> points = read.csv("points.csv", header = TRUE)
> print(points)
x y z
1 400.01 650.01 2.70
2 150.00 780.00 3.40
3 250.00 780.00 3.10
4 800.00 700.00 1.00
5 1000.00 680.00 1.00
6 1500.00 680.00 0.75
7 1700.00 700.00 1.00
8 1700.00 790.00 1.25
9 1600.00 1000.00 1.20
10 1750.00 1000.00 1.00
11 1800.00 1650.00 0.60
12 1400.00 1650.00 0.65
13 1000.00 1650.00 0.80
14 500.00 1650.00 0.90
15 150.00 1650.00 1.30
16 150.00 1050.00 3.90
17 500.00 1000.00 3.00
> s=interp(points$x,points$y,points$z,xo=seq(min(points$x),max(points$x),length=300),yo=seq(min(points$y),max(points$y),length=300))
对我有用。我认为您需要做的就是将最终列表转换为矩阵。
s1 <- interp2xyz(s)
dim(s1)
# [1] 90000 3
很多点为z值生成一个NA值
sum(is.na(s1[,3]))
# [1] 4897
您可以选择排除这些点或使用外推法。