Skip to content

Commit 7811f04

Browse files
author
Dana Paige Seidel
authored
Fix incorrect monotonicity test failure in sec.axis (#2805)
1 parent 4d2ca99 commit 7811f04

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

R/axis-secondary.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,10 @@ AxisSecondary <- ggproto("AxisSecondary", NULL,
113113
if (self$empty()) return()
114114

115115
# Get original range before transformation
116-
along_range <- seq(range[1], range[2], length.out = self$detail)
117-
old_range <- scale$trans$inverse(along_range)
116+
inv_range <- scale$trans$inverse(range)
118117

119118
# Create mapping between primary and secondary range
119+
old_range <- seq(inv_range[1], inv_range[2], length.out = self$detail)
120120
full_range <- self$transform_range(old_range)
121121

122122
# Test for monotonicity

tests/testthat/test-sec-axis.R

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,19 @@ test_that("sec axis works with tidy eval", {
115115

116116
expect_equal(breaks$major_source / 10, breaks$sec.major_source)
117117
})
118+
119+
test_that("sec_axis() works for power transformations (monotonicity test doesn't fail)", {
120+
p <- ggplot(foo, aes(x, y)) +
121+
geom_point() +
122+
scale_x_sqrt(sec.axis = dup_axis())
123+
scale <- layer_scales(p)$x
124+
breaks <- scale$break_info()
125+
expect_equal(breaks$major, breaks$sec.major, tolerance = .001)
126+
127+
p <- ggplot(foo, aes(x, y)) +
128+
geom_point() +
129+
scale_x_sqrt(sec.axis = sec_axis(~. * 100))
130+
scale <- layer_scales(p)$x
131+
breaks <- scale$break_info()
132+
expect_equal(breaks$major, breaks$sec.major, tolerance = .001)
133+
})

0 commit comments

Comments
 (0)