Skip to content

Commit 2ba4a0d

Browse files
committed
Add dummy data to layer to fix tidyverse#1655
Add to news Fix inherit.aes so dummy data is not called out Define and use dummy_data() to assign data to annotation layers Add tests for dummy data and inherit.aes
1 parent 24ff91a commit 2ba4a0d

7 files changed

+33
-6
lines changed

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939

4040
* Fix error message of Stats ggprotos when required aesthetics are
4141
missing.
42+
43+
* Fix bug that resulted in several annotation_x function not getting drawn when
44+
global data was lacking (#1655)
4245

4346
# ggplot2 2.1.0
4447

R/annotation-custom.r

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ NULL
4242
#' annotation_custom(grob = g, xmin = 1, xmax = 10, ymin = 8, ymax = 10)
4343
annotation_custom <- function(grob, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) {
4444
layer(
45-
data = NULL,
45+
data = dummy_data(),
4646
stat = StatIdentity,
4747
position = PositionIdentity,
4848
geom = GeomCustomAnn,
49-
inherit.aes = TRUE,
49+
inherit.aes = FALSE,
5050
params = list(
5151
grob = grob,
5252
xmin = xmin,

R/annotation-logticks.r

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ annotation_logticks <- function(base = 10, sides = "bl", scaled = TRUE,
8181
colour <- color
8282

8383
layer(
84-
data = data.frame(x = NA),
84+
data = dummy_data(),
8585
mapping = NULL,
8686
stat = StatIdentity,
8787
geom = GeomLogticks,

R/annotation-map.r

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ annotation_map <- function(map, ...) {
3434
stopifnot(all(c("x", "y", "id") %in% names(map)))
3535

3636
layer(
37-
data = NULL,
37+
data = dummy_data(),
3838
stat = StatIdentity,
3939
geom = GeomAnnotationMap,
4040
position = PositionIdentity,

R/annotation-raster.r

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ annotation_raster <- function(raster, xmin, xmax, ymin, ymax,
4343
raster <- grDevices::as.raster(raster)
4444

4545
layer(
46-
data = NULL,
46+
data = dummy_data(),
4747
mapping = NULL,
4848
stat = StatIdentity,
4949
position = PositionIdentity,
5050
geom = GeomRasterAnn,
51-
inherit.aes = TRUE,
51+
inherit.aes = FALSE,
5252
params = list(
5353
raster = raster,
5454
xmin = xmin,

R/utilities.r

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ dispatch_args <- function(f, ...) {
281281
f
282282
}
283283

284+
# Used in annotations to ensure printed even when no
285+
# global data
286+
dummy_data <- function() data.frame(x = NA)
287+
284288
# Needed to trigger package loading
285289
#' @importFrom tibble tibble
286290
NULL

tests/testthat/test-annotate.r

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,23 @@ test_that("segment annotations transform with scales", {
2626
annotate("segment", x = 2, y = 10, xend = 5, yend = 30, colour = "red") +
2727
scale_y_reverse()
2828
})
29+
30+
test_that("annotation_* has dummy data assigned and don't inherit aes", {
31+
custom <- annotation_custom(zeroGrob())
32+
logtick <- annotation_logticks()
33+
library(maps)
34+
usamap <- map_data("state")
35+
map <- annotation_map(usamap)
36+
rainbow <- matrix(hcl(seq(0, 360, length.out = 50 * 50), 80, 70), nrow = 50)
37+
raster <- annotation_raster(rainbow, 15, 20, 3, 4)
38+
dummy <- dummy_data()
39+
expect_equal(custom$data, dummy)
40+
expect_equal(logtick$data, dummy)
41+
expect_equal(map$data, dummy)
42+
expect_equal(raster$data, dummy)
43+
44+
expect_false(custom$inherit.aes)
45+
expect_false(logtick$inherit.aes)
46+
expect_false(map$inherit.aes)
47+
expect_false(raster$inherit.aes)
48+
})

0 commit comments

Comments
 (0)