ggplot2中scale_y_continuous(position="right")失效问题求助
解决ggplot2 y轴移至右侧的报错问题
你这个报错其实是踩了个小坑:position="right"根本就不是scale_y_continuous()的参数,所以R才会提示“未使用的参数”——这个参数从来不属于这个函数,跟功能更新没关系哦。
要把整个y轴(标签+刻度)移到图表右侧,正确的修改方式是通过theme()来设置,下面给你两种适配不同ggplot2版本的方案:
方案1:适配ggplot2 3.3.0及以上版本(推荐)
新版本的ggplot2提供了更简洁的参数,一行代码就能搞定:
library(ggplot2) df <- data.frame(weeks = c(-1, 0, 1, 2, 3, 4), mean = c(64, 65, 66, 66, 66, 67)) ggplot(df, aes(x = weeks, y = mean)) + geom_line() + # 这里可以替换成你原本的几何图层(比如geom_point等) scale_y_continuous(limits = c(62, 69), breaks = c(61, 63, 65, 67, 69)) + # 保留你原本的刻度和范围设置 theme(axis.y.position = "right") # 核心:将y轴整体移到右侧
方案2:适配旧版ggplot2(低于3.3.0)
如果你的ggplot2版本比较老,没有axis.y.position参数,就需要分别控制左右两侧的刻度和标签显示:
library(ggplot2) df <- data.frame(weeks = c(-1, 0, 1, 2, 3, 4), mean = c(64, 65, 66, 66, 66, 67)) ggplot(df, aes(x = weeks, y = mean)) + geom_line() + scale_y_continuous(limits = c(62, 69), breaks = c(61, 63, 65, 67, 69)) + theme( axis.text.y.right = element_text(color = "black"), # 显示右侧y轴文本 axis.ticks.y.right = element_line(color = "black"), # 显示右侧y轴刻度 axis.text.y.left = element_blank(), # 隐藏左侧y轴文本 axis.ticks.y.left = element_blank() # 隐藏左侧y轴刻度 )
额外需求:同时显示左右两侧y轴
如果需要保留左侧y轴,同时在右侧添加一个相同(或不同)的y轴,可以用sec.axis参数:
ggplot(df, aes(x = weeks, y = mean)) + geom_line() + scale_y_continuous(limits = c(62, 69), breaks = c(61, 63, 65, 67, 69), sec.axis = dup_axis(name = "右侧y轴标签")) # 复制左侧轴到右侧,可自定义标签
内容的提问来源于stack exchange,提问作者SHW
相关产品推荐
相关产品推荐

