代码之家  ›  专栏  ›  技术社区  ›  Mark R

如何捕获和操作GGOPTT2默认轴值

  •  2
  • Mark R  · 技术社区  · 6 年前

    我想从GGTRAP中捕获默认的轴断裂,并用PrutTyNoMy.下面的代码可以工作,但是它创建了同一个图两次,所以看起来像是一个黑客。是否可以使用弃权()捕获默认值?

    vec <- c(10^seq(-3,3,1))
    foo.df <- data.frame("x"=vec,"y"=vec)
    p <- ggplot(foo.df, aes(x,y)) + geom_point() +
      scale_x_log10() +
      scale_y_log10()
    
    y_breaks <- ggplot_build(p)$layout$panel_params[[1]]$y.minor_source
    
    
    ggplot(foo.df, aes(x,y)) + geom_point() +
      scale_x_log10() +
      scale_y_log10(breaks = 10^y_breaks, labels = prettyNum(10^y_breaks))
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   eipi10    6 年前

    这个 labels scale_y_log10 可以接受函数,因此不必知道默认中断的特定值。传递给的函数 标签 将转换标签,不管中断值是什么。例如:

    ggplot(foo.df, aes(x,y)) + geom_point() +
      scale_x_log10() +
      scale_y_log10(labels=prettyNum)
    

    但是,在您的示例中,您访问的是次要中断的位置,而不是主要中断,因此您可以有效地将次要中断转换为主要中断。在这种情况下,如果将初始绘图指定给 p 正如您在示例中所做的,然后执行以下操作,其中我们使用了 layer_scales

    p + 
      scale_y_log10(breaks=10^layer_scales(p)$y$get_breaks_minor(),
                    labels=prettyNum)
    
    推荐文章