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)。有一些函数可以计算出来吗?