首页 文章

增加轴刻度数

提问于
浏览
142

我正在为一些数据生成图,但是滴答的数量太小,我需要更高的读数精度 .

有没有办法增加ggplot2中的轴刻度数?

我知道我可以告诉ggplot使用向量作为轴刻度,但我想要的是增加所有数据的刻度数 . 换句话说,我希望根据数据计算滴答数 .

可能ggplot在内部使用某种算法执行此操作,但我无法找到它是如何做到的,根据我的需要进行更改 .

4 回答

  • 2

    另外,

    ggplot(dat, aes(x,y)) +
    geom_point() +
    scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))
    

    适用于分箱或离散缩放的x轴数据(即,不需要舍入) .

  • 108

    您可以通过修改 scale_x_continuous 和/或 scale_y_continuous 来覆盖ggplots默认比例 . 例如:

    library(ggplot2)
    dat <- data.frame(x = rnorm(100), y = rnorm(100))
    
    ggplot(dat, aes(x,y)) +
      geom_point()
    

    给你这个:

    enter image description here

    覆盖尺度可以给你这样的东西:

    ggplot(dat, aes(x,y)) +
      geom_point() +
      scale_x_continuous(breaks = round(seq(min(dat$x), max(dat$x), by = 0.5),1)) +
      scale_y_continuous(breaks = round(seq(min(dat$y), max(dat$y), by = 0.5),1))
    

    enter image description here

    如果您想简单地在图表的特定部分使用"zoom",请分别查看 xlim()ylim() . 也可以通过here了解其他论点 .

  • 56

    您可以使用内置的 pretty 功能:

    ggplot(dat, aes(x,y)) + geom_point() +
    scale_x_continuous(breaks = pretty(dat$x, n = 10)) +
    scale_y_continuous(breaks = pretty(dat$y, n = 10))
    

    基于Daniel Krizian's comment,您还可以使用 scales 库中的pretty_breaks函数,该函数会自动导入:

    ggplot(dat, aes(x,y)) + geom_point() +
    scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
    scale_y_continuous(breaks = scales::pretty_breaks(n = 10))
    

    您所要做的就是插入所需的刻度数 .

  • 144

    您可以为 scale 提供函数参数,ggplot将使用该函数计算刻度位置 .

    library(ggplot2)
    dat <- data.frame(x = rnorm(100), y = rnorm(100))
    number_ticks <- function(n) {function(limits) pretty(limits, n)}
    
    ggplot(dat, aes(x,y)) +
      geom_point() +
      scale_x_continuous(breaks=number_ticks(10)) +
      scale_y_continuous(breaks=number_ticks(10))
    

相关问题