diff --git a/R/guides-axis.r b/R/guides-axis.r index ef0c7b6f65..b0f9b7edbf 100644 --- a/R/guides-axis.r +++ b/R/guides-axis.r @@ -93,7 +93,7 @@ guide_train.axis <- function(guide, scale, aesthetic = NULL) { } } - guide$key <- ticks + guide$key <- ticks[is.finite(ticks[[aesthetic]]), ] } guide$name <- paste0(guide$name, "_", aesthetic) diff --git a/R/scale-view.r b/R/scale-view.r index 2986e275cd..e7a77ff6cf 100644 --- a/R/scale-view.r +++ b/R/scale-view.r @@ -17,7 +17,6 @@ view_scale_primary <- function(scale, limits = scale$get_limits(), if(!scale$is_discrete()) { breaks <- scale$get_breaks(continuous_range) - breaks <- breaks[is.finite(breaks)] minor_breaks <- scale$get_breaks_minor(b = breaks, limits = continuous_range) } else { breaks <- scale$get_breaks(limits) diff --git a/tests/testthat/test-scales-breaks-labels.r b/tests/testthat/test-scales-breaks-labels.r index 12bd968e7e..3c8edf800a 100644 --- a/tests/testthat/test-scales-breaks-labels.r +++ b/tests/testthat/test-scales-breaks-labels.r @@ -247,6 +247,22 @@ test_that("continuous limits accepts functions", { expect_equal(layer_scales(p)$y$get_limits(), c(range(mpg$hwy)[1] - 10, range(mpg$hwy)[2] + 100)) }) +test_that("equal length breaks and labels can be passed to ViewScales with limits", { + + test_scale <- scale_x_continuous( + breaks = c(0, 20, 40), + labels = c("0", "20", "40"), + limits = c(10, 30) + ) + + expect_identical(test_scale$get_breaks(), c(NA, 20, NA)) + expect_identical(test_scale$get_labels(), c(c("0", "20", "40"))) + + test_view_scale <- view_scale_primary(test_scale) + expect_identical(test_view_scale$get_breaks(), c(NA, 20, NA)) + expect_identical(test_scale$get_labels(), c(c("0", "20", "40"))) +}) + # Visual tests ------------------------------------------------------------ test_that("minor breaks draw correctly", {