ggplot中coord_cartesian的xlim参数不生效问题求助
解决ggplot2中x轴范围设置无效的问题
你的代码里coord_cartesian(xlim = c(13,90))没生效,核心原因是坐标变换函数coord_trans会覆盖之前的coord_cartesian设置——coord_trans会重新构建坐标系统,而coord_cartesian只是对现有坐标做缩放,后者放在前者前面的话,会被前者的坐标重置覆盖。
给你两种可行的修改方案:
方案1:调整坐标函数顺序,把coord_cartesian放在最后
把coord_cartesian移到所有图层和coord_trans之后,让它的范围限制最终生效:
ggplot(aes(x = age, y = friend_count), data = pf) + geom_point(alpha = 0.05, position = position_jitter(h = 0), color = 'orange') + geom_line(stat = 'summary', fun = mean) + geom_line(stat = 'summary', fun = quantile, fun.args = list(probs = .1), linetype = 2, color = 'blue') + geom_line(stat = 'summary', fun = quantile, fun.args = list(probs = .9), linetype = 2, color = 'blue') + coord_trans(y = "sqrt") + coord_cartesian(xlim = c(13,90))
方案2:在coord_trans中直接设置x轴范围
既然coord_trans会构建新坐标系统,直接在里面同时指定y轴变换和x轴范围,一步到位:
ggplot(aes(x = age, y = friend_count), data = pf) + geom_point(alpha = 0.05, position = position_jitter(h = 0), color = 'orange') + geom_line(stat = 'summary', fun = mean) + geom_line(stat = 'summary', fun = quantile, fun.args = list(probs = .1), linetype = 2, color = 'blue') + geom_line(stat = 'summary', fun = quantile, fun.args = list(probs = .9), linetype = 2, color = 'blue') + coord_trans(y = "sqrt", xlim = c(13,90))
这两种方法都能让x轴严格按照你设置的c(13,90)范围显示,实现“放大”效果。
内容的提问来源于stack exchange,提问作者Brian Scott
相关产品推荐
相关产品推荐

