R ggplot使用log10对数坐标轴时如何设置x轴原点及范围
核心注意点
对数刻度的轴无法设置原点为0,因为log10(0)属于无意义的负无穷值,无法在坐标轴上渲染。你要的「消除轴端留白+自定义显示范围」效果,可以直接在scale_x_log10()内添加对应参数实现,和y轴的设置逻辑一致。
修改方法
你只需要在原来的scale_x_log10()参数中补充expand和limits两个参数即可:
expand = c(0, 0):消除x轴两端的默认留白,让绘图区域和x轴范围完全贴合,实现和y轴一样的「贴边」效果limits = c(最小有效值, 最大有效值):自定义x轴的显示范围,注意最小值必须大于0,可以根据你的数据实际取值调整,如果设置后有数据点超出范围被自动剔除,把上下限调得更宽松即可。
修改后的完整代码如下:
breaks <- 10^(-10:10) # 主刻度分割 minor_breaks <- rep(1:9, 21)*(10^rep(-10:10, each = 9)) # 次刻度分割 ggplot(data = cars, aes(x = dist, y = speed)) + geom_point() + # 给x轴对数刻度添加贴边和范围设置,下限设为1(大于0即可,可根据需求调整) scale_x_log10(breaks = breaks, minor_breaks = minor_breaks, expand = c(0, 0), limits = c(1, 130)) + theme(panel.grid.major = element_line(colour = "grey50")) + theme(panel.grid.minor = element_line(colour = "grey70")) + theme_light(base_size = 12) + scale_y_continuous(expand = c(0, 0), limits = c(0,30)) # y轴原点和范围设置
内容的提问来源于stack exchange,提问作者Markm0705
相关产品推荐
相关产品推荐

