gpt4 book ai didi

r - facet_zoom 无法更改缩放图的中断

转载 作者:行者123 更新时间:2023-12-02 03:26:07 24 4
gpt4 key购买 nike

我目前有一个绘图并使用 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))

但这也改变了原始情节的中断。是否可以只更改缩放部分的中断,同时将原始图保留为默认值?

最佳答案

这适用于您的用例:

ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = between(x, 0, 10)) +
scale_x_continuous(breaks = pretty)

plot

?scale_x_continuous 开始,breaks 将接受以下内容(强调已添加):

One of:

  • NULL for no breaks
  • waiver() for the default breaks computed by the transformation object
  • A numeric vector of positions
  • A function that takes the limits as input and returns breaks as output

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
)

more examples

当然,您也可以定义自己的函数,将绘图限制转换为所需的中断,(例如 p + scale_x_continuous(breaks = function(x) seq(min(x), max(x), length.out = 5))),但我通常发现这些功能需要更多调整才能正确使用,& pretty() 通常就足够了。

关于r - facet_zoom 无法更改缩放图的中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53372868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com