gpt4 book ai didi

r - 获取构面的比例/范围(比例 ='free' )

转载 作者:行者123 更新时间:2023-12-01 16:20:02 24 4
gpt4 key购买 nike

我有一个带有自由刻度的多面 ggplot。现在我想在每个方面的相同相对位置处注释该图。如果我知道如何获得每个方面的范围/限制,这将很容易做到。问题:有什么方法可以获取 ggplot 中每个方面的比例吗?

在下面的例子中,我是手动完成的。问题是如何通过使用 a2 (这也更精确)的函数构造 facet_scales。如果我调用 str(a2),它会给出 a2$scales 的解释。它还指出一个有用的函数可能是 get_scales()。可悲的是,我不知道如何调用这个函数。

library(ggplot2)
a <- ggplot(data = msleep, aes(x = bodywt, y = sleep_total))+ geom_point()
a2 <- a + facet_wrap(~vore, scales="free")
a2

facet_scales = data.frame(vore=c(levels(msleep$vore), NA),
x_min = c(0,0,0,0,0),
x_max = c(800,7000,60,90,4),
y_min = c(0,0,5,7.5,5),
y_max = c(20,18,21,19,15)
)
a2 + geom_rect(data=facet_scales, mapping =aes(xmin=x_min, xmax=x_max, ymin=y_min,
ymax=(y_max+y_min)/3, x=NULL, y=NULL ), color='yellow', alpha=0.2)

最佳答案

您可以通过使用函数ggplot_build()转换a2来获取每个面轴的范围。然后轴范围存储在列表元素 layout 子列表 panel_params 中,然后对于每个面板,x 轴范围存储在元素 x.range

a3 <- ggplot_build(a2)

a3$layout$panel_params[[1]]$x.range
[1] -39.9706 839.9986

a3$layout$panel_params[[2]]$x.range
[1] -332.6769 6986.6989

关于r - 获取构面的比例/范围(比例 ='free' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27898651/

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