正如我在评论中提到的,非位置尺度指南和coord_polar
是规模或者更准确地说是限制没有扩大。为了coord_polar
即使默认扩展设置为零,这发生在CoordPolar$setup_panel_params
:
...
if (self$theta == n) {
expansion <- ggplot2:::default_expansion(scale, c(0, 0.5), c(0, 0))
} else {
expansion <- ggplot2:::default_expansion(scale, c(0, 0), c(0, 0))
}
...
因此,返回的下限和上限中断scales::breaks_extended
通常会被丢弃,因为它没有落入限制之内。
也就是说,一种选择是延长limits
或使用自定义函数,该函数通过计算limits
as range(scales::breaks_extended())
:
library(ggplot2)
limits_extended <- function() {
function(x) {
range((scales::breaks_extended())(x))
}
}
ggplot(mtcars, aes(x = mpg, y = mpg, size = hp)) +
geom_point() +
scale_x_continuous(limits = limits_extended()) +
scale_y_continuous(limits = limits_extended()) +
scale_size(limits = limits_extended()) +
coord_polar() +
labs(color = 'am')