在R中绘制带间断轴的点图:统一点大小与轴区段调整
解决带间断y轴的点图问题
统一所有点的大小
geom_dotplot的点大小是基于binwidth和轴缩放比例的相对值,而scale_y_break的轴间断缩放会打乱这种比例关系,导致不同组的点大小差异悬殊。直接改用geom_point就能用size参数设置绝对大小,保证所有点显示一致:
# 替换geom_dotplot为geom_point,设置统一点大小 p <- ggplot(d, aes(x=Condition, y=Value, color=Condition)) + geom_point(size = 3, position = position_dodge(width = 0.5)) + ylim(0, 90000) # 保留轴间断设置 p2 <- p + scale_y_break(c(10, 600), scales = 50) + scale_y_break(c(2000, 12000), scales = 150)
如果需要类似dotplot的点堆叠效果,避免同组点重叠,用position_jitterdodge调整即可:
p <- ggplot(d, aes(x=Condition, y=Value, color=Condition)) + geom_point(size = 3, position = position_jitterdodge(jitter.width = 0.2, dodge.width = 0.5)) + ylim(0, 90000)
调整y轴0-10区段的显示大小
scale_y_break的scales参数控制间断后区段的缩放倍数,要让0-10区段显示更宽,增大第一个间断的scales值就行——比如把scales=50改成scales=20,这样间断后的600以上区段缩放比例变小,0-10区段的视觉占比就会变大:
p2 <- p + scale_y_break(c(10, 600), scales = 20) + # 增大scales值,放大0-10区段的显示占比 scale_y_break(c(2000, 12000), scales = 150)
另外还可以通过scale_y_continuous的expand参数微调轴的边距,进一步优化0附近区域的显示:
p <- ggplot(d, aes(x=Condition, y=Value, color=Condition)) + geom_point(size = 3, position = position_dodge(width = 0.5)) + ylim(0, 90000) + scale_y_continuous(expand = expansion(mult = c(0.1, 0))) # 调整y轴底部边距,强化0-10区域的显示
内容的提问来源于stack exchange,提问作者Mar77
相关产品推荐
相关产品推荐

