R语言lattice包wireframe函数绘制3D图无网格显示为空
问题原因
lattice::wireframe() 默认要求输入为规则网格数据,即所有x取值与y取值的交叉组合都存在对应的z值。你当前使用的是离散散点数据,x和y的组合存在大量缺失,无法生成网格面,因此出现空图问题。
解决方法
这里提供两种常用解决方案:
- 方案1:对散点数据插值生成规则网格后绘图
可以使用akima包的interp()函数做双线性插值,将不规则散点转换为规则网格数据,示例代码如下:# 加载依赖包 library(lattice) library(akima) # 对原始散点做插值生成规则网格 interp_res <- interp( x = df$x, y = df$y, z = df$z, xo = seq(min(df$x), max(df$x), length.out = 50), yo = seq(min(df$y), max(df$y), length.out = 50) ) # 转换为wireframe支持的数据格式 grid_df <- expand.grid(x = interp_res$x, y = interp_res$y) grid_df$z <- as.vector(interp_res$z) # 绘图 wireframe(z ~ x * y, grid_df, scales = list(arrows = FALSE)) - 方案2:更换适配散点数据的绘图函数
如果你不需要拟合曲面,仅需要展示现有3D点的分布,直接使用你之前可以成功运行的cloud()函数绘制3D散点图即可,无需强制使用wireframe。
内容的提问来源于stack exchange,提问作者Welteninsel
相关产品推荐
相关产品推荐

