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

如何在R语言的正态分布图像中于曲线与竖线交点处绘制水平线

在R语言中给正态分布曲线与竖线交点添加水平线的实现方法

你需要在已绘制的正态分布曲线与指定竖线的交点位置,绘制水平线到目标位置,以下是修改后的完整代码及关键说明:

完整代码

# 先定义均值mu和标准差s的示例值,可按需修改
mu <- 30
s <- 10

colorArea <- function(from, to, density, ..., col=NULL, dens=NULL){
    y_seq <- seq(from, to, length.out=500)
    d <- c(0, density(y_seq, ...), 0)
    polygon(c(from, y_seq, to), d, col=col, density=dens)
}

# 绘制正态分布曲线
curve(dnorm(x, mean=mu, sd=s), from = -10, to = 80, xlab="x", ylab="f(x)", xaxt='n')

# 计算各竖线与曲线交点的纵坐标(正态分布密度值)
y_mu <- dnorm(mu, mean=mu, sd=s)
y_mu_minus_s <- dnorm(mu - s, mean=mu, sd=s)
y_mu_plus_s <- dnorm(mu + s, mean=mu, sd=s)

# 绘制水平线:从曲线起始点到对应竖线位置,纵坐标为交点值
segments(x0 = -10, y0 = y_mu, x1 = mu, y1 = y_mu, col='red', lty=2)
segments(x0 = -10, y0 = y_mu_minus_s, x1 = mu - s, y1 = y_mu_minus_s, col='blue', lty=2)
segments(x0 = -10, y0 = y_mu_plus_s, x1 = mu + s, y1 = y_mu_plus_s, col='blue', lty=2)

# 绘制原有的竖线
abline(v=mu, col='red', lty=1)
abline(v=mu-(s), col='blue', lty=3)
abline(v=mu+(s), col='blue', lty=3)

# 图例设置
legend("topright", legend = c("", ""), 
       title = expression(paste("N(",mu,",",sigma,")")),
      title.adj = 0, lty = 0, lwd = 0, box.lty = 0 )

axis(1, at=mu)
box()

关键步骤说明

  • 参数初始化:先明确mu和s的具体值,否则原代码无法正常运行
  • 计算交点纵坐标:通过dnorm()函数直接获取各竖线位置对应的正态分布密度值,这就是曲线与竖线交点的y值
  • 绘制水平线:使用segments()函数指定水平线的起始x(这里设为曲线绘制的起点-10)、y值,终点x为对应竖线的位置,y值与起点保持一致。如果需要水平线延伸到y轴(x=0),将x0改为0即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:47:27