R 如何从分组数据中的点实现平滑曲面?

R 如何从分组数据中的点实现平滑曲面?,r,plot,3d,rgl,R,Plot,3d,Rgl,使用ggplot(.)+geom_smooth()我们可以通过分组数据的点获得漂亮的曲线 library(ggplot2) span <- 10 ggplot(data, aes(x = x, y = value, group = n)) + geom_smooth(aes(linetype = n), color = "blue", se = FALSE) 我还尝试了rgl、plot3D、lattice和plotly软件包,但没有成功;从前两个我收

使用
ggplot(.)+geom_smooth()
我们可以通过分组数据的点获得漂亮的曲线

library(ggplot2)
span <- 10

ggplot(data, aes(x = x, y = value, group = n)) +
  geom_smooth(aes(linetype = n), color = "blue", 
              se = FALSE)

我还尝试了
rgl、plot3D、lattice
plotly
软件包,但没有成功;从前两个我收到错误,从后两个只是空网格

library(rgl)
persp3d(value ~ var1 + var2, data, col="skyblue")
# Error in seq.default(0, 1, len = nrow(z)) : 
#   argument 'length.out' must be of length 1

library(plot3D)
surf3D(as.matrix(data1[, 1]), as.matrix(data1[, 2]), as.matrix(data1[, 3]))
# Error in if (is.na(var)) ispresent <- FALSE else if (length(var) == 1) if (is.logic
# al(var)) if (!var) ispresent <- FALSE : 
#   argument is of length zero

library(lattice)
wireframe(value ~ var1 + var2, data)
# empty or wrong

library(plotly)
plot_ly(x = data$var1, y = data$value, z = data$var1, type = "surface")
# empty

您的数据在
n
的每个级别内看起来都像一个网格,因此在
rgl
中,您可以将
x
y
列强制为矩阵,并使用
persp3d

library(rgl)
open3d()
for (level in unique(data$n)) {
  sub <- subset(data, n == level)
  x <- matrix(sub$x, 6,6)
  y <- matrix(sub$y, 6,6)
  value <- matrix(sub$value, 6,6)
  persp3d(x, y, value, col = level, alpha = 0.5, add = level > 1)
}
最后需要调用
aspect3d
decorate3d
,因为
persp3d.deldir
不会自动设置纵横比或设置自定义轴标签。这给


如何拟合gam,并使用模型结果绘制:
库(mgcv);mod@user20650很好,但到目前为止还没有提供地层。谢谢你富有启发性的回答!
data <- structure(list(n = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                       1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                                       1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
                                       2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                       2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                       3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
                                       3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
                                       3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
                                       4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
                                       4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("1", "2", "3", "4"
                                       ), class = "factor"), x = c(0, 0, 0, 0, 0, 0, 0.1, 0.1, 0.1, 
                                                                   0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.3, 0.3, 0.3, 0.3, 
                                                                   0.3, 0.3, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 0.5, 0.5, 0.5, 
                                                                   0.5, 0, 0, 0, 0, 0, 0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 
                                                                   0.2, 0.2, 0.2, 0.2, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.4, 0.4, 0.4, 
                                                                   0.4, 0.4, 0.4, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 
                                                                   0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.3, 
                                                                   0.3, 0.3, 0.3, 0.3, 0.3, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 
                                                                   0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0.1, 0.1, 0.1, 0.1, 0.1, 
                                                                   0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 
                                                                   0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5), 
                       y = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 
                             0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 
                             0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 
                             0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 
                             0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 
                             0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 
                             0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 
                             0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 
                             0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 
                             0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 
                             0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0, 0.1, 0.2, 
                             0.3, 0.4, 0.5), value = c(0, 0.000253671562082777, 0.00048064085447263, 
                                                       0.000680907877169559, 0.000854472630173565, 0.00100133511348465, 
                                                       0.000253671562082777, 0.00048064085447263, 0.000680907877169559, 
                                                       0.000854472630173565, 0.00100133511348465, 0.0011214953271028, 
                                                       0.00048064085447263, 0.000680907877169559, 0.000854472630173565, 
                                                       0.00100133511348465, 0.0011214953271028, 0.00121495327102804, 
                                                       0.000680907877169559, 0.000854472630173565, 0.00100133511348465, 
                                                       0.0011214953271028, 0.00121495327102804, 0.00128170894526035, 
                                                       0.000854472630173565, 0.00100133511348465, 0.0011214953271028, 
                                                       0.00121495327102804, 0.00128170894526035, 0.00132176234979973, 
                                                       0.00100133511348465, 0.0011214953271028, 0.00121495327102804, 
                                                       0.00128170894526035, 0.00132176234979973, 0.00133511348464619, 
                                                       0, 0.000126751167444963, 0.000240160106737825, 0.000340226817878586, 
                                                       0.000426951300867245, 0.000500333555703803, 0.000126751167444963, 
                                                       0.000240160106737825, 0.000340226817878586, 0.000426951300867245, 
                                                       0.000500333555703803, 0.000560373582388259, 0.000240160106737825, 
                                                       0.000340226817878586, 0.000426951300867245, 0.000500333555703803, 
                                                       0.000560373582388259, 0.000607071380920614, 0.000340226817878586, 
                                                       0.000426951300867245, 0.000500333555703803, 0.000560373582388259, 
                                                       0.000607071380920614, 0.000640426951300867, 0.000426951300867245, 
                                                       0.000500333555703803, 0.000560373582388259, 0.000607071380920614, 
                                                       0.000640426951300867, 0.000660440293529019, 0.000500333555703803, 
                                                       0.000560373582388259, 0.000607071380920614, 0.000640426951300867, 
                                                       0.000660440293529019, 0.00066711140760507, 0, 6.33544514838279e-05, 
                                                       0.000120040013337779, 0.000170056685561854, 0.000213404468156052, 
                                                       0.000250083361120373, 6.33544514838279e-05, 0.000120040013337779, 
                                                       0.000170056685561854, 0.000213404468156052, 0.000250083361120373, 
                                                       0.000280093364454818, 0.000120040013337779, 0.000170056685561854, 
                                                       0.000213404468156052, 0.000250083361120373, 0.000280093364454818, 
                                                       0.000303434478159386, 0.000170056685561854, 0.000213404468156052, 
                                                       0.000250083361120373, 0.000280093364454818, 0.000303434478159386, 
                                                       0.000320106702234078, 0.000213404468156052, 0.000250083361120373, 
                                                       0.000280093364454818, 0.000303434478159386, 0.000320106702234078, 
                                                       0.000330110036678893, 0.000250083361120373, 0.000280093364454818, 
                                                       0.000303434478159386, 0.000320106702234078, 0.000330110036678893, 
                                                       0.000333444481493831, 0, 1.26675111674112e-05, 2.40016001066738e-05, 
                                                       3.40022668177879e-05, 4.26695113007534e-05, 5.00033335555704e-05, 
                                                       1.26675111674112e-05, 2.40016001066738e-05, 3.40022668177879e-05, 
                                                       4.26695113007534e-05, 5.00033335555704e-05, 5.60037335822388e-05, 
                                                       2.40016001066738e-05, 3.40022668177879e-05, 4.26695113007534e-05, 
                                                       5.00033335555704e-05, 5.60037335822388e-05, 6.06707113807587e-05, 
                                                       3.40022668177879e-05, 4.26695113007534e-05, 5.00033335555704e-05, 
                                                       5.60037335822388e-05, 6.06707113807587e-05, 6.40042669511301e-05, 
                                                       4.26695113007534e-05, 5.00033335555704e-05, 5.60037335822388e-05, 
                                                       6.06707113807587e-05, 6.40042669511301e-05, 6.60044002933529e-05, 
                                                       5.00033335555704e-05, 5.60037335822388e-05, 6.06707113807587e-05, 
                                                       6.40042669511301e-05, 6.60044002933529e-05, 6.66711114074272e-05
                             )), .Names = c("n", "x", "y", "value"), row.names = c(NA, 
                                                                                   -144L), class = "data.frame")
library(rgl)
open3d()
for (level in unique(data$n)) {
  sub <- subset(data, n == level)
  x <- matrix(sub$x, 6,6)
  y <- matrix(sub$y, 6,6)
  value <- matrix(sub$value, 6,6)
  persp3d(x, y, value, col = level, alpha = 0.5, add = level > 1)
}
library(rgl)
library(deldir)
open3d()
for (level in unique(data$n)) {
  sub <- subset(data, n == level)
  surf <- deldir(sub$x, sub$y, z = sub$value, suppressMsge = TRUE)
  persp3d(surf, col = level, alpha = 0.5, add = TRUE)
}
aspect3d(1,1,1)
decorate3d(zlab = "value")