Я хочу создать график, используя facet_grid()
со свободными масштабами для оси y. Однако для каждой строки разрывы шкалы должны распределяться равномерно, то есть с 3 перерывами.
Я получил от этот вопрос , но я не смог адаптировать код таким образом, чтобы разрывы шкалы были на самом деле довольно .
Однако, это мой текущий подход:
# Packages
library(dplyr)
library(ggplot2)
library(scales)
# Test Data
set.seed(123)
result_df <- data.frame(
variable = rep(c(1,2,3,4), each = 4),
mode = rep(c(1,2), each = 2),
treat = rep(c(1,2)) %>% as.factor(),
mean = rnorm(16, mean = .7, sd = 0.2),
x = abs(rnorm(16, mean = 0, sd = 0.5))) %>%
mutate(lower = mean - x,upper = mean + x)
# Function for equal breaks, lended from
equal_breaks <- function(n = 3, s = 0.05, ...) {
function(x) {
d <- s * diff(range(x)) / (1+2*s)
round(seq(min(x)+d, max(x)-d, length=n), 2)
}}
## Plot
result_df %>%
ggplot(aes(y = mean*100, x = treat)) +
geom_pointrange(aes(ymin = lower*100, ymax = upper*100), shape = 20) +
facet_grid(variable ~ mode, scales = "free_y")+
scale_y_continuous(breaks = equal_breaks(n = 3, s = .2))+
labs(x = "", y = "")
Что приводит к этому текущему графику . Как видно, перерывы далеко не разумны.
Заранее спасибо за любые рекомендации и, пожалуйста, извините, если я пропустил уже существующее решение.
Бест, Мальте