使用R语言plotly绘制与x/y轴相交的垂直平面问题求解
R语言Plotly绘制指定垂直相交平面解决方案
实现原理
当前代码生成倾斜平面的原因是:构造的z矩阵为固定取值的二维网格,所有点的z值仅随x轴变化,生成的是平行于y轴的倾斜平面,而非垂直于xy平面的目标平面。
要实现与x轴交于x=25、与y轴交于y=20的垂直平面,首先推导平面方程:该平面垂直于xy平面,满足截距式 x/25 + y/20 = 1,整理为 4x + 5y = 100,z可在任意取值范围内连续变化。
完整实现代码
library(plotly) # 原有曲面数据 matrix22 <- c( c(5, 5.8, 6.2, 7.0), c(5, 5.8, 6.2, 7.0), c(5, 5.8, 6.2, 7.0), c(5, 5.8, 6.2, 7.0) ) dim(matrix22) <- c(4,4) x2 <- c(0,10,15,25) y2 <- c(20,12,8,0) rownames(matrix22) <- x2 colnames(matrix22) <- y2 # 构造垂直平面数据 # 匹配原有x轴范围设置平面x取值 x_plane <- seq(0, 25, length.out = 50) # 覆盖原有曲面z区间设置平面z取值 z_plane <- seq(min(matrix22)-1, max(matrix22)+1, length.out = 50) # 根据平面方程计算y矩阵,y值仅和x相关,与z无关 y_plane <- matrix(rep((100 - 4*x_plane)/5, length(z_plane)), nrow = length(x_plane)) # 构造z矩阵,z值随采样点连续变化 z_mat <- t(matrix(rep(z_plane, length(x_plane)), nrow = length(z_plane))) # 叠加绘制两个曲面 g <- plot_ly() %>% add_surface(z = ~matrix22, x = x2, y = y2, opacity = 0.7, name = "原有曲面") %>% add_surface(x = x_plane, y = y_plane, z = z_mat, opacity = 0.5, colorscale = "Reds", name = "垂直平面") g
参数说明
opacity参数控制曲面透明度,调整后可更清晰观察两个曲面的交线- 可根据实际业务数据的范围,灵活调整
x_plane和z_plane的取值区间与采样密度
内容的提问来源于stack exchange,提问作者ael
相关产品推荐
相关产品推荐

