【问题标题】:Increase the default number of breaks for ggplot scale增加 ggplot 比例的默认中断数
【发布时间】:2020-11-07 02:09:52
【问题描述】:

我喜欢制作一个 ggplot 主题,其中默认的轴中断数是默认值的两倍。我不确定要更新什么设置。我可以从this question 看到,ggplot 使用labeling::extended 计算休息时间。从文档中我可以看到参数m 控制中断的数量:

用法
扩展(dmin, dmax, m, Q = c(1, 5, 2, 2.5, 4, 3), only.loose = FALSE, w = c(0.25, 0.2, 0.5, 0.05))

m 个轴标签

这是从scales::extended_breaks 传递的,我可以看到默认设置为 5:

 function (n = 5, ...) 
    {
        n_default <- n
        function(x, n = n_default) {
            x <- x[is.finite(x)]
            if (length(x) == 0) {
                return(numeric())
            }
            rng <- range(x)
            labeling::extended(rng[1], rng[2], n, ...)
        }
    }

那么有没有一个主题设置我可以将默认 n 更改为例如10 点?

theme_more_ticks <- function(nticks = 10) {
    theme_minimal() +
    ...?
}

我知道可以通过多种方式更改单个情节的中断(ref)。但是,我希望我使用此主题制作的所有情节的中断次数是默认主题时的两倍。

【问题讨论】:

  • 也许我没有抓住重点,但为什么不在适当的scale_xxx_yyy 函数中使用breaks 参数呢?
  • 我想更改默认设置,而不是在每个绘图中添加scale_xxx_yyy

标签: r ggplot2


【解决方案1】:

我很抱歉。我忽略了您帖子第一行中的“主题”一词。

我认为你不能使用主题做你想做的事,因为据我了解,主题影响ggplot2 元素的外观,而不是用于计算它们的数量、位置、值等的算法。最好的我可以做的是修改用于构造 ggplot 对象的函数。例如

mtcars %>% ggplot() + geom_point(aes(x=cyl, y=mpg))

给予

但是

scale_x_continuous <- function(...) ggplot2::scale_x_continuous(..., breaks=scales::extended_breaks(n=10, ...))
mtcars %>% ggplot() + geom_point(aes(x=cyl, y=mpg))

生产

因此,与其重新定义theme,不如覆盖各种scale_xxxx_yyyy 函数。这与重新定义默认 theme 类似一次性任务。

检查我对... 的处理。我没查过,以前弄错了。

这有帮助吗?

【讨论】:

  • 是的,我认为这会很好。我会在我的用例中给它一个爆炸。
  • 其实我觉得第二组...s 需要去掉才能正常工作
  • 如果我把它们放在很多东西的休息时间,但把它们拿出来似乎没问题。
最近更新 更多