Skip to content

Commit 4383b51

Browse files
committed
ensure effective limits are sorted when negatives present
1 parent 5184f5e commit 4383b51

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

R/guide-axis-logticks.R

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -187,28 +187,27 @@ GuideAxisLogticks <- ggproto(
187187
# Reconstruct original range
188188
limits <- transformation$inverse(scale$get_limits())
189189
has_negatives <- any(limits <= 0)
190-
191-
if (!has_negatives) {
192-
start <- floor(log10(min(limits))) - 1L
193-
end <- ceiling(log10(max(limits))) + 1L
194-
} else {
195-
params$negative_small <- params$negative_small %||% 0.1
196-
start <- floor(log10(abs(params$negative_small)))
197-
end <- ceiling(log10(max(abs(limits)))) + 1L
190+
if (has_negatives) {
191+
large <- max(abs(limits))
192+
small <- params$negative_small %||% 0.1
193+
limits <- sort(c(small * 10, large))
198194
}
199195

196+
start <- floor(log10(min(limits))) - 1L
197+
end <- ceiling(log10(max(limits))) + 1L
198+
200199
# Calculate tick marks
201-
tens <- 10^seq(start, end, by = 1)
200+
tens <- 10^seq(start, end, by = 1L)
202201
fives <- tens * 5
203202
ones <- as.vector(outer(setdiff(2:9, 5), tens))
204203

205204
if (has_negatives) {
206205
# Filter and mirror ticks around 0
207-
tens <- tens[tens >= params$negative_small]
206+
tens <- tens[tens >= small]
208207
tens <- c(tens, -tens, 0)
209-
fives <- fives[fives >= params$negative_small]
208+
fives <- fives[fives >= small]
210209
fives <- c(fives, -fives)
211-
ones <- ones[ones >= params$negative_small]
210+
ones <- ones[ones >= small]
212211
ones <- c(ones, -ones)
213212
}
214213

0 commit comments

Comments
 (0)