我想从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))
这个 labels scale_y_log10 可以接受函数,因此不必知道默认中断的特定值。传递给的函数 标签 将转换标签,不管中断值是什么。例如:
labels
scale_y_log10
标签
ggplot(foo.df, aes(x,y)) + geom_point() + scale_x_log10() + scale_y_log10(labels=prettyNum)
但是,在您的示例中,您访问的是次要中断的位置,而不是主要中断,因此您可以有效地将次要中断转换为主要中断。在这种情况下,如果将初始绘图指定给 p 正如您在示例中所做的,然后执行以下操作,其中我们使用了 layer_scales
p
layer_scales
p + scale_y_log10(breaks=10^layer_scales(p)$y$get_breaks_minor(), labels=prettyNum)