我正在为一些数据生成图,但是滴答的数量太小,我需要更高的读数精度 .
有没有办法增加ggplot2中的轴刻度数?
我知道我可以告诉ggplot使用向量作为轴刻度,但我想要的是增加所有数据的刻度数 . 换句话说,我希望根据数据计算滴答数 .
可能ggplot在内部使用某种算法执行此操作,但我无法找到它是如何做到的,根据我的需要进行更改 .
另外,
ggplot(dat, aes(x,y)) + geom_point() + scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))
适用于分箱或离散缩放的x轴数据(即,不需要舍入) .
您可以通过修改 scale_x_continuous 和/或 scale_y_continuous 来覆盖ggplots默认比例 . 例如:
scale_x_continuous
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))
如果您想简单地在图表的特定部分使用"zoom",请分别查看 xlim() 和 ylim() . 也可以通过here了解其他论点 .
xlim()
ylim()
您可以使用内置的 pretty 功能:
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函数,该函数会自动导入:
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))
您所要做的就是插入所需的刻度数 .
您可以为 scale 提供函数参数,ggplot将使用该函数计算刻度位置 .
scale
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))
4 回答
另外,
适用于分箱或离散缩放的x轴数据(即,不需要舍入) .
您可以通过修改
scale_x_continuous
和/或scale_y_continuous
来覆盖ggplots默认比例 . 例如:给你这个:
覆盖尺度可以给你这样的东西:
如果您想简单地在图表的特定部分使用"zoom",请分别查看
xlim()
和ylim()
. 也可以通过here了解其他论点 .您可以使用内置的
pretty
功能:基于Daniel Krizian's comment,您还可以使用
scales
库中的pretty_breaks函数,该函数会自动导入:您所要做的就是插入所需的刻度数 .
您可以为
scale
提供函数参数,ggplot将使用该函数计算刻度位置 .