R Script - 3D-поверхность с помощью интерполяции нескольких точек X,Y,Z

Я хотел бы использовать R, чтобы он использовал несколько точек X,Y,Z данных, которые у меня есть (черные точки на изображении), а затем генерировал 300x300 точек XYZ, которые представляли бы трехмерный график поверхности, видимый на изображении в цвете. Я бы хотел, чтобы на выходе было три столбца, точки X, Y и Z. Я попробовал следующее, но, похоже, он не генерирует нужные мне данные. Мне нужны точки X,Y,Z, чтобы сгенерировать изображение в другой программе (spotfire), и мне не нужно создавать графику в R. Любая помощь будет принята с благодарностью! Благодарю.

3D-график поверхности с точками

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

1 ответ

Решение

Меня устраивает. Я думаю, что все, что вам нужно сделать, это преобразовать окончательный список в матрицу.

s1 <- interp2xyz(s)
dim(s1)
# [1] 90000     3

Много точек генерируют значения NA для значения z

sum(is.na(s1[,3]))
# [1] 4897

Вы можете исключить эти точки или использовать экстраполяцию.

Другие вопросы по тегам