是否有可能从使用`facet_wrap`的`ggplots`获得`axis break`?

时间:2018-05-01 09:40:43

标签: r ggplot2

我想在下图中为每个轴创建自定义标签。每个方面都有不同数量的休息时间。我不想在视觉上计算休息时间,而是要调用一个提供每个方面断点长度的函数。我知道axTicks包中的scales函数为基本R图提供了这个功能。 ggplots有什么用途吗?这是我正在使用的实际情节,然后是一些代码来重现类似的东西。

enter image description here

require(tidyverse)
require(scales)

vary_1 <- c(
  exp(rnorm(250,5,1)),
  rnorm(250,10,10),
  exp(rnorm(250,20,1)),
  exp(rnorm(250,30,1)))


  vary_2 <- c(
      rep('A',250),
      rep('B',250),
      rep('C',250),
      rep('D',250))

  data_frame(vary_1,vary_2) %>% 
      ggplot(aes(vary_1,color = vary_2,fill = vary_2))+
      geom_density()+
      facet_wrap(~vary_2,scales = 'free')

axTicks(side = 2)
[1] 0.0 0.2 0.4 0.6 0.8 1.0 # not the correct answer

1 个答案:

答案 0 :(得分:1)

看看这是否能解决您的问题。

p <- data_frame(vary_1,vary_2) %>% 
  ggplot(aes(vary_1,color = vary_2,fill = vary_2))+
  geom_density()+
  facet_wrap(~vary_2,scales = 'free')

q <- layer_data(p)
q %>%
  group_by(PANEL) %>%
  summarise_at(vars(x), funs(min, max))

# # A tibble: 4 x 3
#   PANEL      min     max
#   <fct>    <dbl>   <dbl>
# 1 1      9.95e 0 2.74e 3
# 2 2     -2.10e 1 4.42e 1
# 3 3      3.24e 7 7.95e 9
# 4 4      7.42e11 1.45e14

有关详细信息,请参阅此post