增加轴刻度数

时间:2012-07-04 22:00:59

标签: r ggplot2

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

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

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

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

5 个答案:

答案 0 :(得分:155)

您可以修改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

如果您想简单地“缩放”绘图的特定部分,请分别查看xlim()ylim()。也可以找到好的见解here来理解其他论点。

答案 1 :(得分:131)

您可以使用内置的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))

您只需插入所需的刻度数。

答案 2 :(得分:60)

您可以为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))

答案 3 :(得分:13)

即将推出的ggplot2 v3.3.0版本将提供一个选项n.breaks,用于自动为scale_x_continuousscale_y_continuous生成中断

    devtools::install_github("tidyverse/ggplot2")

    library(ggplot2)

    plt <- ggplot(mtcars, aes(x = mpg, y = disp)) +
      geom_point()

    plt + 
      scale_x_continuous(n.breaks = 5)

enter image description here

    plt + 
      scale_x_continuous(n.breaks = 10) +
      scale_y_continuous(n.breaks = 10)

enter image description here

答案 4 :(得分:2)

此外,

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

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