调整ggplot2边际密度图与Y轴Rug位置,避免重叠及优化布局
解决Y轴外侧Rug图与边际密度图重叠问题
问题说明
基于给定的test数据集,需要绘制满足以下要求的可视化图:
- 散点图展示
length与position的关系 - Y轴外侧添加Rug图
- X、Y轴添加填充式边际密度分布图
- 使用
theme_bw主题,图例置于底部
当前代码生成的图存在Y轴外侧Rug图与右侧边际密度图重叠的问题,需调整布局让各元素保持间距、避免拥挤。
调整后代码
library(ggplot2) library(ggExtra) # 构建主图,调整边距和Rug图位置 plottest <- ggplot(test, aes(x=length, y=position, colour = category, fill = category)) + geom_point(size = 2, alpha = 0.7) + # 设置Rug图位置和样式,明确外侧位置 geom_rug(sides = "r", col="#174e73", alpha=0.4, size=1.2, outside = TRUE, outside.position = "plot") + theme_bw() + # 调整主图右侧边距,给Rug图留出空间 theme(legend.position="bottom", plot.margin = margin(5, 20, 5, 5, "pt")) + coord_cartesian(clip = "off") + # 统一颜色映射,确保点、Rug、密度图颜色一致 scale_color_manual(values=c("#174e73")) + scale_fill_manual(values=c("#174e73")) # 添加边际密度图,调整尺寸避免重叠 ggMarginal(plottest, type = "density", groupColour = TRUE, groupFill = TRUE, # 减小边际图相对主图的尺寸,留出间距 size = 3)
关键调整点
- 主图边距:通过
plot.margin给主图右侧增加额外空间,确保Rug图有足够的展示区域 - Rug图位置:设置
outside.position = "plot"明确Rug图置于绘图区外侧,配合边距避免和边际图冲突 - 边际图尺寸:调整
ggMarginal的size参数(默认是5),减小边际图的相对占比,让其和主图、Rug图保持合理间距 - 颜色统一:添加
fill美学映射并设置scale_fill_manual,确保密度图的填充色和散点、Rug图颜色一致,满足视觉统一要求
内容的提问来源于stack exchange,提问作者ramen
相关产品推荐
相关产品推荐

