如何用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
相关产品推荐
相关产品推荐

