我想知道是否有办法询问 R 情节是否具有固定的纵横比。下面是两个示例图:
library (ggplot2)
plot_a <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point()+
theme (aspect.ratio = 1)
plot_b <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point()
plot_a
具有固定的纵横比,而 plot_b
没有固定的纵横比。我正在寻找以下虚函数:is_fixed_ratio (plot_a)
TRUE
is_fixed_ratio (plot_b)
FALSE
有没有办法做到这一点?
最佳答案
假设我们有以下图:
library (ggplot2)
plot_a <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point()+
theme (aspect.ratio = 1)
plot_b <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point()
plot_c <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point() +
coord_equal()
当前接受的答案将如下处理:
is_fixed_ratio <- function(plot){
purrr::map(plot, "aspect.ratio") %>%
unlist() %>%
is.null() %>%
!.
}
> is_fixed_ratio(plot_a)
[1] TRUE
> is_fixed_ratio(plot_b)
[1] FALSE
> is_fixed_ratio(plot_c)
[1] FALSE
而
plot_c
确实有一个固定的纵横比,只是没有通过主题指定。要检查这一点,您可以检查绘图的 gtable:
is_fixed_ratio2 <- function(plot) {
ggplotGrob(plot)$respect
}
> is_fixed_ratio2(plot_a)
[1] TRUE
> is_fixed_ratio2(plot_b)
[1] FALSE
> is_fixed_ratio2(plot_c)
[1] TRUE
关于r - 如何在 R 中测试图是否具有固定的纵横比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58732919/