如何绘制基于y值填充颜色的平滑geom_area图?
实现基于y值渐变填充的平滑面积图
要实现类似ggridges包中geom_density_ridges_gradient的渐变填充效果,同时保留geom_area的平滑样式,无需用geom_col拼接矩形,你可以用ggforce包的geom_gradient_area函数直接实现:
完整代码示例
# 首次使用需安装ggforce包 install.packages("ggforce") library(ggplot2) library(ggforce) # 设置随机种子保证结果可复现 set.seed(123) data <- data.frame(x = 1:100, y = rnorm(100, 20, 3)) # 绘制渐变填充的平滑面积图 ggplot(data, aes(x = x, y = y)) + geom_gradient_area(aes(fill = y)) + scale_fill_viridis_c(option = "plasma") # 可选:用viridis系渐变优化配色
补充说明
geom_gradient_area会自动按x轴分段,根据每段对应的y值生成渐变填充,既保留了geom_area的平滑曲线,又实现了类似geom_col的逐段颜色映射效果。- 若不想额外安装包,也可以手动将数据转换为多边形顶点后用
geom_polygon实现,但步骤繁琐,效果远不如ggforce的方案简洁直观。
内容的提问来源于stack exchange,提问作者OnLeRo
相关产品推荐
相关产品推荐

