You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中绘制二维正态分布的透明线框图

用R复刻二维正态分布的透明线框图

不管是3D线框还是2D等高线风格的透明效果,都可以通过R的绘图包快速实现,以下是两种场景的具体代码:

第一步:生成二维正态分布数据

先准备绘图所需的密度数据:

library(mvtnorm)
set.seed(123) # 固定随机种子保证结果可复现

# 创建网格点
x <- seq(-3, 3, length.out = 50)
y <- seq(-3, 3, length.out = 50)
grid_df <- expand.grid(x = x, y = y)

# 计算二维正态分布密度
z_vals <- dmvnorm(grid_df, 
                  mean = c(0, 0), 
                  sigma = matrix(c(1, 0.5, 0.5, 1), nrow = 2))
z_matrix <- matrix(z_vals, nrow = 50, ncol = 50) # 转成矩阵用于3D绘图

方法1:3D透明线框图(静态/交互式)

静态版本(lattice包)

lattice的wireframe可以快速生成静态透明线框,通过rgb()函数控制线条透明度:

library(lattice)
wireframe(z_matrix,
          xlab = "X", ylab = "Y", zlab = "Density",
          scales = list(arrows = FALSE), # 去掉轴箭头更简洁
          col = rgb(0, 0, 1, alpha = 0.3), # alpha控制透明度,0全透明1不透明
          lwd = 0.8) # 调整线条粗细

交互式版本(rgl包)

如果需要可旋转查看的3D图,用rgl包的wire3d:

library(rgl)
open3d() # 打开3D窗口
wire3d(x, y, z_matrix,
       color = "royalblue",
       alpha = 0.3, # 直接设置透明度
       lwd = 1)
axes3d() # 添加坐标轴
title3d(xlab = "X", ylab = "Y", zlab = "Density")

方法2:2D透明等高线(线框风格的2D呈现)

如果只需要2D效果,用ggplot2的geom_contour设置透明度即可:

library(ggplot2)
ggplot(grid_df, aes(x = x, y = y, z = z_vals)) +
  geom_contour(color = "royalblue", alpha = 0.4, size = 0.8) +
  theme_minimal() +
  labs(x = "X", y = "Y", title = "2D Transparent Contours of Bivariate Normal")

关键注意点

  • 透明度参数:不同包的实现略有差异,lattice通过rgb()的alpha分量控制,rgl和ggplot2直接用alpha参数。
  • 线条粗细:通过lwd(lattice/rgl)或size(ggplot2)调整,适配透明效果的视觉舒适度。

内容的提问来源于stack exchange,提问作者stats_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:10:16