我正在为一些数据生成图,但刻度数太少,我需要更精确的读数。
有什么方法可以增加 ggplot2 中的轴刻度数吗?
我知道我可以告诉 ggplot 使用向量作为轴刻度,但我想要的是增加所有数据的刻度数。换句话说,我希望从数据中计算出刻度数。
可能 ggplot 在内部使用某种算法执行此操作,但我找不到它是如何做到的,以根据我想要的进行更改。
scale_x_continuous
您可以通过修改和/或覆盖 ggplots 默认比例scale_y_continuous
。例如:
library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x,y)) +
geom_point()
给你这个:
覆盖尺度可以给你这样的东西:
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))
如果您想简单地“放大”绘图的特定部分,请分别查看xlim()
和ylim()
。在这里也可以找到很好的洞察力来理解其他论点。
根据Daniel Krizian 的评论,您还可以使用库中自动导入的pretty_breaks
函数:scales
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))
您所要做的就是插入所需的刻度数n
。
一个不太有用的解决方案(因为您必须再次指定数据变量),您可以使用内置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))
您可以为 提供一个函数参数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))
此外,
ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))
适用于分箱或离散缩放的 x 轴数据(即,不需要舍入)。
对此问题的答复以及如何在 R ggplot 中以相等的间隔在 X 和 Y 轴上设置标签?
mtcars %>%
ggplot(aes(mpg, disp)) +
geom_point() +
geom_smooth() +
scale_y_continuous(limits = c(0, 500),
breaks = seq(0,500,50)) +
scale_x_continuous(limits = c(0,40),
breaks = seq(0,40,5))