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

如何用ggplot在单张图中绘制多个分布数据集?

在同一张ggplot图中绘制多数据集分布曲线的实现方法

有两种常用方法可以实现你的需求,具体如下:

方法1:直接叠加多个geom_line层

这种方式适合快速实现,直接给每个数据集单独添加一个geom_line,并通过颜色、线型等参数区分不同曲线:

plot <- ggplot() +
  # 绘制df1的曲线,指定蓝色
  geom_line(data = as.data.frame(df1), aes(x = x, y = y), color = "blue") +
  # 绘制df2的曲线,指定红色
  geom_line(data = as.data.frame(df2), aes(x = x, y = y), color = "red") +
  # 绘制df3的曲线,指定绿色
  geom_line(data = as.data.frame(df3), aes(x = x, y = y), color = "green") +
  xlab(expression(beta[1])) + 
  ylab("Probability density")

方法2:合并数据集后绘制(推荐)

遵循tidy data原则,先给每个数据集添加分组标识,合并后通过映射color或linetype区分,还能自动生成图例,更便于维护和扩展:

# 为每个数据集添加分组标签
df1$dataset <- "df1"
df2$dataset <- "df2"
df3$dataset <- "df3"

# 合并三个数据集
combined_data <- rbind(as.data.frame(df1), as.data.frame(df2), as.data.frame(df3))

# 基于合并数据集绘制曲线,自动生成图例
plot <- ggplot(combined_data, aes(x = x, y = y, color = dataset)) +
  geom_line() +
  xlab(expression(beta[1])) + 
  ylab("Probability density") +
  labs(color = "Dataset")  # 自定义图例标题

如果需要区分曲线样式而非颜色,可以把color = dataset换成linetype = dataset,或者两者结合使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:48:22