Answers:
您可以通过修改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()。在这里也可以找到很好的见解,以了解其他论点。
max-min/30则是一个非常常见的“桶”大小...但这对您来说可能不是一个好的起点。
scale_x_date(date_breaks = "5 months", date_minor_breaks = "1 months")
根据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))
scales但没有将函数添加到您的名称空间。因此,您可以在不导入的情况下将其称为scales::pretty_breaks(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))
number_ticks。这已在中实现pretty_breaks {scales}。因此: ggplot(dat, aes(x,y)) + geom_point() + scale_x_continuous(breaks=pretty_breaks(n=10)) + scale_y_continuous(breaks=pretty_breaks(n=10))
require(scales)2)这似乎阻止了我的休息以科学计数法出现,因此1e6更改为1000000?
pretty不使用scales包而使用基数R ,只需提供值作为参数即可。例如:(breaks=pretty(dat$x, n=10))
即将发布的v3.3.0版本ggplot2将提供一个选项,n.breaks可以自动为scale_x_continuous和生成中断scale_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)
plt +
scale_x_continuous(n.breaks = 10) +
scale_y_continuous(n.breaks = 10)
by参数“概括” 为不同的数字小数位,即,对于该数据,该范围为c(-3,3)的值是一个好的值,但对于范围为c(-3,3)的数据来说,这不是一个好的范围是c(0,5000)。有一些函数可以计算出来吗?