首页 > 解决方案 > 使用 facet_grid() 创建相等且漂亮的比例中断

问题描述

我想使用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 = "")

这导致了这个当前的情节。可以看出,休息时间远非合理。

提前感谢您的任何建议,如果我错过了已经存在的解决方案,请原谅我。

最好的,马耳他

标签: rggplot2facet-grid

解决方案


推荐阅读