You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在R语言中合并绘制两个密度函数的连续密度曲线?

在R语言中合并两个概率密度曲线的方法

嗨,我来帮你搞定把两个PDF曲线合并到同一张图的问题!其实用curve函数就能轻松实现,关键是用好add=TRUE参数,下面给你一步步演示:

方法一:使用基础绘图系统(curve函数)

首先假设你已经有了两个自定义的概率密度函数,我先举个示例(你可以直接替换成自己的函数):

# 定义第一个PDF:标准正态分布的概率密度函数
pdf_normal <- function(x) dnorm(x, mean = 0, sd = 1)
# 定义第二个PDF:伽马分布的概率密度函数
pdf_gamma <- function(x) dgamma(x, shape = 2, rate = 1)

接下来分两步绘制:

  1. 先绘制第一条曲线,设置好x轴范围(根据你的PDF有效区间调整)、颜色、标签等:
curve(pdf_normal, from = -3, to = 5, col = "blue", lwd = 2, 
      main = "叠加的概率密度曲线", xlab = "x", ylab = "概率密度")
  1. 叠加第二条曲线,核心就是加上add=TRUE参数,让它画在已有的图上:
curve(pdf_gamma, from = -3, to = 5, col = "red", lwd = 2, add = TRUE)

最后可以加个图例区分两条曲线:

legend("topright", legend = c("标准正态分布PDF", "伽马分布PDF"), 
       col = c("blue", "red"), lwd = 2)

方法二:用ggplot2绘制(更灵活美观)

如果你习惯用ggplot2,也可以用stat_function来实现:

library(ggplot2)

# 生成覆盖两个PDF的x值序列
x_seq <- seq(-3, 5, length.out = 1000)

# 绘制叠加曲线
ggplot(data.frame(x = x_seq), aes(x = x)) +
  stat_function(fun = pdf_normal, color = "blue", size = 1) +
  stat_function(fun = pdf_gamma, color = "red", size = 1) +
  labs(title = "叠加的概率密度曲线", x = "x", y = "概率密度") +
  theme_minimal()

小提示

  • 一定要确保fromto的范围能覆盖两个PDF的有效取值区间,不然会看不到完整曲线;
  • 如果你的PDF是分段函数,记得在定义函数时处理好定义域逻辑;
  • 可以通过调整lwd(线宽)、lty(线型)让曲线的区分度更高。

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

火山引擎 最新活动