我目前有一个绘图,并使用facet_zoom
专注于x轴上0到10之间的记录。以下代码重现了一个示例:
require(ggplot2)
require(ggforce)
require(dplyr)
x <- rnorm(10000, 50, 25)
y <- rexp(10000)
data <- data.frame(x, y)
ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = dplyr::between(x, 0, 10))
我想将图表的缩放部分上的中断更改为与以下内容等效:
ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = dplyr::between(x, 0, 10)) +
scale_x_continuous(breaks = seq(0,10,2))
但是,这也改变了原始情节的休息时间。可以仅在原始图保留为默认值的情况下更改缩放部分的中断吗?
答案 0 :(得分:0)
这适用于您的用例:
ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = between(x, 0, 10)) +
scale_x_continuous(breaks = pretty)
在?scale_x_continuous
中,breaks
将接受以下内容(强调):
其中之一:
NULL
不间断waiver()
获取转换对象计算出的默认中断- 位置的数字向量
- 一个函数,该函数以限制作为输入,并返回中断作为输出
pretty()
是这样的功能之一。它没有提供很好的控制,但是确实允许您有一些余地来指定跨度不同,比例不同的断面。
为说明起见,这是两个示例,它们的中断次数不同。有关此函数接受的其他参数的更多详细信息,请参见?pretty
。
p <- ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = between(x, 0, 10))
cowplot::plot_grid(
p + scale_x_continuous(breaks = function(x) pretty(x, n = 3)),
p + scale_x_continuous(breaks = function(x) pretty(x, n = 10)),
labels = c("n = 3", "n = 10"),
nrow = 1
)
当然,您还可以定义自己的函数,以将绘图限制转换为所需的中断(例如类似p + scale_x_continuous(breaks = function(x) seq(min(x), max(x), length.out = 5))
的东西),但是我通常发现这些函数需要更多的调整才能正确完成,&{{1} }通常足够好。