绘制箱线图添加数据标签后Y轴范围自动变更问题求助
箱线图Y轴限被自动修改的解决方法
问题根源
- 你当前的代码里,设置Y轴限的操作没有保存到变量
p中,后续添加数据标签时调用的还是原始未修改轴限的p,所以轴范围会回到默认状态。 - 另外,
geom_text里设置y=Volume+1.85,如果计算后的Y值超出了-100~500的范围,ggplot会自动扩展轴限来显示所有文本标签。
两种解决办法
办法1:更新p对象后再添加标签
把轴限设置的结果保存到p里,之后再叠加文本标签图层:
# 先把轴限和X轴设置更新到p p <- p + scale_x_discrete(name="Time intervals") + scale_y_continuous(name="Tumour volume change (%)", limits = c(-100, 500)) # 再添加数据标签 p + geom_text(data = tumourvolume, aes(y=Volume+1.85, label = Volume), position = position_dodge(width=0.5), size=2)
办法2:用coord_cartesian强制锁定可视范围
如果Volume+1.85的数值超过了500,用coord_cartesian()可以在不过滤数据的前提下,固定显示的轴范围,避免ggplot自动扩展:
p + scale_x_discrete(name="Time intervals") + scale_y_continuous(name="Tumour volume change (%)") + geom_text(data = tumourvolume, aes(y=Volume+1.85, label = Volume), position = position_dodge(width=0.5), size=2) + coord_cartesian(ylim = c(-100, 500))
效果对比
- 设置轴限后的初始效果:

- 修复后添加数据标签的效果:(将保持Y轴范围在-100到500之间)
内容的提问来源于stack exchange,提问作者beccah12
相关产品推荐
相关产品推荐

