Skip to content

Commit 6c2e102

Browse files
authored
Interpreter/wrapper for gpar() (#5867)
* write wrapper * use wrapper * add news bullet * remove defunct `len0_null()`
1 parent e24cbba commit 6c2e102

26 files changed

+146
-101
lines changed

NAMESPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,7 @@ export(get_alt_text)
422422
export(get_element_tree)
423423
export(get_guide_data)
424424
export(gg_dep)
425+
export(ggpar)
425426
export(ggplot)
426427
export(ggplotGrob)
427428
export(ggplot_add)

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# ggplot2 (development version)
22

3+
* New helper function `ggpar()` to translate ggplot2's interpretation of
4+
graphical parameters to {grid}'s interpretation (@teunbrand, #5866).
5+
36
# ggplot2 3.5.1
47

58
This is a small release focusing on fixing regressions from 3.5.0 and

R/annotation-logticks.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,14 @@ GeomLogticks <- ggproto("GeomLogticks", Geom,
175175
ticks$x_b <- with(data, segmentsGrob(
176176
x0 = unit(xticks$x, "native"), x1 = unit(xticks$x, "native"),
177177
y0 = unit(xticks$start, "cm"), y1 = unit(xticks$end, "cm"),
178-
gp = gpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth * .pt)
178+
gp = ggpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth)
179179
))
180180
}
181181
if (grepl("t", sides) && nrow(xticks) > 0) {
182182
ticks$x_t <- with(data, segmentsGrob(
183183
x0 = unit(xticks$x, "native"), x1 = unit(xticks$x, "native"),
184184
y0 = unit(1, "npc") - unit(xticks$start, "cm"), y1 = unit(1, "npc") - unit(xticks$end, "cm"),
185-
gp = gpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth * .pt)
185+
gp = ggpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth)
186186
))
187187
}
188188
}
@@ -213,14 +213,14 @@ GeomLogticks <- ggproto("GeomLogticks", Geom,
213213
ticks$y_l <- with(data, segmentsGrob(
214214
y0 = unit(yticks$y, "native"), y1 = unit(yticks$y, "native"),
215215
x0 = unit(yticks$start, "cm"), x1 = unit(yticks$end, "cm"),
216-
gp = gpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth * .pt)
216+
gp = ggpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth)
217217
))
218218
}
219219
if (grepl("r", sides) && nrow(yticks) > 0) {
220220
ticks$y_r <- with(data, segmentsGrob(
221221
y0 = unit(yticks$y, "native"), y1 = unit(yticks$y, "native"),
222222
x0 = unit(1, "npc") - unit(yticks$start, "cm"), x1 = unit(1, "npc") - unit(yticks$end, "cm"),
223-
gp = gpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth * .pt)
223+
gp = ggpar(col = alpha(colour, alpha), lty = linetype, lwd = linewidth)
224224
))
225225
}
226226
}

R/annotation-map.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ GeomAnnotationMap <- ggproto("GeomAnnotationMap", GeomMap,
9595

9696
polygonGrob(coords$x, coords$y, default.units = "native",
9797
id = grob_id,
98-
gp = gpar(
98+
gp = ggpar(
9999
col = data$colour, fill = alpha(data$fill, data$alpha),
100-
lwd = data$linewidth * .pt)
100+
lwd = data$linewidth)
101101
)
102102
},
103103

R/coord-radial.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,8 @@ CoordRadial <- ggproto("CoordRadial", Coord,
326326
y = c(Inf, -Inf, -Inf, Inf)
327327
)
328328
background <- coord_munch(self, background, panel_params, is_closed = TRUE)
329-
bg_gp <- gpar(
330-
lwd = len0_null(bg_element$linewidth * .pt),
329+
bg_gp <- ggpar(
330+
lwd = bg_element$linewidth,
331331
col = bg_element$colour, fill = bg_element$fill,
332332
lty = bg_element$linetype
333333
)

R/coord-sf.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,9 @@ CoordSf <- ggproto("CoordSf", CoordCartesian,
326326
if (inherits(el, "element_blank")) {
327327
grobs <- list(element_render(theme, "panel.background"))
328328
} else {
329-
line_gp <- gpar(
329+
line_gp <- ggpar(
330330
col = el$colour,
331-
lwd = len0_null(el$linewidth * .pt),
331+
lwd = el$linewidth,
332332
lty = el$linetype
333333
)
334334
grobs <- c(

R/geom-curve.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ GeomCurve <- ggproto("GeomCurve", GeomSegment,
5757
default.units = "native",
5858
curvature = curvature, angle = angle, ncp = ncp,
5959
square = FALSE, squareShape = 1, inflect = FALSE, open = TRUE,
60-
gp = gpar(
60+
gp = ggpar(
6161
col = alpha(trans$colour, trans$alpha),
6262
fill = alpha(arrow.fill, trans$alpha),
63-
lwd = trans$linewidth * .pt,
63+
lwd = trans$linewidth,
6464
lty = trans$linetype,
6565
lineend = lineend),
6666
arrow = arrow

R/geom-dotplot.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,9 +293,9 @@ GeomDotplot <- ggproto("GeomDotplot", Geom,
293293
dotstackGrob(stackaxis = stackaxis, x = tdata$x, y = tdata$y, dotdia = dotdianpc,
294294
stackposition = tdata$stackpos, stackdir = stackdir, stackratio = stackratio,
295295
default.units = "npc",
296-
gp = gpar(col = alpha(tdata$colour, tdata$alpha),
296+
gp = ggpar(col = alpha(tdata$colour, tdata$alpha),
297297
fill = fill_alpha(tdata$fill, tdata$alpha),
298-
lwd = tdata$stroke, lty = tdata$linetype,
298+
lwd = tdata$stroke / .pt, lty = tdata$linetype,
299299
lineend = lineend))
300300
)
301301
},

R/geom-hex.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ GeomHex <- ggproto("GeomHex", Geom,
8989

9090
ggname("geom_hex", polygonGrob(
9191
coords$x, coords$y,
92-
gp = gpar(
92+
gp = ggpar(
9393
col = data$colour,
9494
fill = fill_alpha(data$fill, data$alpha),
95-
lwd = data$linewidth * .pt,
95+
lwd = data$linewidth,
9696
lty = data$linetype,
9797
lineend = lineend,
9898
linejoin = linejoin,

R/geom-label.R

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,17 @@ GeomLabel <- ggproto("GeomLabel", Geom,
9090
padding = label.padding,
9191
r = label.r,
9292
angle = row$angle,
93-
text.gp = gpar(
93+
text.gp = ggpar(
9494
col = row$colour,
9595
fontsize = row$size * size.unit,
9696
fontfamily = row$family,
9797
fontface = row$fontface,
9898
lineheight = row$lineheight
9999
),
100-
rect.gp = gpar(
100+
rect.gp = ggpar(
101101
col = if (isTRUE(all.equal(label.size, 0))) NA else row$colour,
102102
fill = fill_alpha(row$fill, row$alpha),
103-
lwd = label.size * .pt
103+
lwd = label.size
104104
)
105105
)
106106
})
@@ -115,7 +115,7 @@ GeomLabel <- ggproto("GeomLabel", Geom,
115115
labelGrob <- function(label, x = unit(0.5, "npc"), y = unit(0.5, "npc"),
116116
just = "center", padding = unit(0.25, "lines"), r = unit(0.1, "snpc"),
117117
angle = NULL, default.units = "npc", name = NULL,
118-
text.gp = gpar(), rect.gp = gpar(fill = "white"), vp = NULL) {
118+
text.gp = gpar(), rect.gp = ggpar(fill = "white"), vp = NULL) {
119119

120120
if (length(label) != 1) {
121121
cli::cli_abort("{.arg label} must be of length 1.")
@@ -130,7 +130,7 @@ labelGrob <- function(label, x = unit(0.5, "npc"), y = unit(0.5, "npc"),
130130
vp <- viewport(
131131
angle = angle, x = x, y = y,
132132
width = unit(0, "cm"), height = unit(0, "cm"),
133-
gp = gpar(fontsize = text.gp$fontsize)
133+
gp = ggpar(fontsize = text.gp$fontsize)
134134
)
135135
x <- unit(rep(0.5, length(x)), "npc")
136136
y <- unit(rep(0.5, length(y)), "npc")

R/geom-map.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,10 @@ GeomMap <- ggproto("GeomMap", GeomPolygon,
144144
data <- data[data_rows, , drop = FALSE]
145145

146146
polygonGrob(coords$x, coords$y, default.units = "native", id = grob_id,
147-
gp = gpar(
147+
gp = ggpar(
148148
col = data$colour,
149149
fill = fill_alpha(data$fill, data$alpha),
150-
lwd = data$linewidth * .pt,
150+
lwd = data$linewidth,
151151
lineend = lineend,
152152
linejoin = linejoin,
153153
linemitre = linemitre

R/geom-path.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,10 @@ GeomPath <- ggproto("GeomPath", Geom,
200200
segmentsGrob(
201201
munched$x[!end], munched$y[!end], munched$x[!start], munched$y[!start],
202202
default.units = "native", arrow = arrow,
203-
gp = gpar(
203+
gp = ggpar(
204204
col = alpha(munched$colour, munched$alpha)[!end],
205205
fill = alpha(munched$colour, munched$alpha)[!end],
206-
lwd = munched$linewidth[!end] * .pt,
206+
lwd = munched$linewidth[!end],
207207
lty = munched$linetype[!end],
208208
lineend = lineend,
209209
linejoin = linejoin,
@@ -215,10 +215,10 @@ GeomPath <- ggproto("GeomPath", Geom,
215215
polylineGrob(
216216
munched$x, munched$y, id = id,
217217
default.units = "native", arrow = arrow,
218-
gp = gpar(
218+
gp = ggpar(
219219
col = alpha(munched$colour, munched$alpha)[start],
220220
fill = alpha(munched$colour, munched$alpha)[start],
221-
lwd = munched$linewidth[start] * .pt,
221+
lwd = munched$linewidth[start],
222222
lty = munched$linetype[start],
223223
lineend = lineend,
224224
linejoin = linejoin,

R/geom-point.R

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,18 +145,15 @@ GeomPoint <- ggproto("GeomPoint", Geom,
145145
}
146146

147147
coords <- coord$transform(data, panel_params)
148-
stroke_size <- coords$stroke
149-
stroke_size[is.na(stroke_size)] <- 0
150148
ggname("geom_point",
151149
pointsGrob(
152150
coords$x, coords$y,
153151
pch = coords$shape,
154-
gp = gpar(
152+
gp = ggpar(
155153
col = alpha(coords$colour, coords$alpha),
156154
fill = fill_alpha(coords$fill, coords$alpha),
157-
# Stroke is added around the outside of the point
158-
fontsize = coords$size * .pt + stroke_size * .stroke / 2,
159-
lwd = coords$stroke * .stroke / 2
155+
pointsize = coords$size,
156+
stroke = coords$stroke
160157
)
161158
)
162159
)

R/geom-polygon.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,10 @@ GeomPolygon <- ggproto("GeomPolygon", Geom,
130130
polygonGrob(
131131
munched$x, munched$y, default.units = "native",
132132
id = munched$group,
133-
gp = gpar(
133+
gp = ggpar(
134134
col = first_rows$colour,
135135
fill = fill_alpha(first_rows$fill, first_rows$alpha),
136-
lwd = first_rows$linewidth * .pt,
136+
lwd = first_rows$linewidth,
137137
lty = first_rows$linetype,
138138
lineend = lineend,
139139
linejoin = linejoin,
@@ -161,10 +161,10 @@ GeomPolygon <- ggproto("GeomPolygon", Geom,
161161
munched$x, munched$y, default.units = "native",
162162
id = id, pathId = munched$group,
163163
rule = rule,
164-
gp = gpar(
164+
gp = ggpar(
165165
col = first_rows$colour,
166166
fill = fill_alpha(first_rows$fill, first_rows$alpha),
167-
lwd = first_rows$linewidth * .pt,
167+
lwd = first_rows$linewidth,
168168
lty = first_rows$linetype,
169169
lineend = lineend,
170170
linejoin = linejoin,

R/geom-rect.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ GeomRect <- ggproto("GeomRect", Geom,
5757
height = coords$ymax - coords$ymin,
5858
default.units = "native",
5959
just = c("left", "top"),
60-
gp = gpar(
60+
gp = ggpar(
6161
col = coords$colour,
6262
fill = fill_alpha(coords$fill, coords$alpha),
63-
lwd = coords$linewidth * .pt,
63+
lwd = coords$linewidth,
6464
lty = coords$linetype,
6565
linejoin = linejoin,
6666
lineend = lineend

R/geom-ribbon.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,10 @@ GeomRibbon <- ggproto("GeomRibbon", Geom,
182182
g_poly <- polygonGrob(
183183
munched_poly$x, munched_poly$y, id = munched_poly$id,
184184
default.units = "native",
185-
gp = gpar(
185+
gp = ggpar(
186186
fill = fill_alpha(aes$fill, aes$alpha),
187187
col = if (is_full_outline) aes$colour else NA,
188-
lwd = if (is_full_outline) aes$linewidth * .pt else 0,
188+
lwd = if (is_full_outline) aes$linewidth else 0,
189189
lty = if (is_full_outline) aes$linetype else 1,
190190
lineend = lineend,
191191
linejoin = linejoin,
@@ -213,9 +213,9 @@ GeomRibbon <- ggproto("GeomRibbon", Geom,
213213
g_lines <- polylineGrob(
214214
munched_lines$x, munched_lines$y, id = munched_lines$id,
215215
default.units = "native",
216-
gp = gpar(
216+
gp = ggpar(
217217
col = aes$colour,
218-
lwd = aes$linewidth * .pt,
218+
lwd = aes$linewidth,
219219
lty = aes$linetype,
220220
lineend = lineend,
221221
linejoin = linejoin,

R/geom-rug.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,10 @@ GeomRug <- ggproto("GeomRug", Geom,
108108
list(min = -1 * length, max = unit(1, "npc") + length)
109109
}
110110

111-
gp <- gpar(
111+
gp <- ggpar(
112112
col = alpha(data$colour, data$alpha),
113113
lty = data$linetype,
114-
lwd = data$linewidth * .pt,
114+
lwd = data$linewidth,
115115
lineend = lineend
116116
)
117117
if (!is.null(data$x)) {

R/geom-segment.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ GeomSegment <- ggproto("GeomSegment", Geom,
122122
arrow.fill <- arrow.fill %||% coord$colour
123123
return(segmentsGrob(coord$x, coord$y, coord$xend, coord$yend,
124124
default.units = "native",
125-
gp = gpar(
125+
gp = ggpar(
126126
col = alpha(coord$colour, coord$alpha),
127127
fill = alpha(arrow.fill, coord$alpha),
128-
lwd = coord$linewidth * .pt,
128+
lwd = coord$linewidth,
129129
lty = coord$linetype,
130130
lineend = lineend,
131131
linejoin = linejoin

R/geom-text.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ GeomText <- ggproto("GeomText", Geom,
239239
data$x, data$y, default.units = "native",
240240
hjust = data$hjust, vjust = data$vjust,
241241
rot = data$angle,
242-
gp = gpar(
242+
gp = ggpar(
243243
col = alpha(data$colour, data$alpha),
244244
fontsize = data$size * size.unit,
245245
fontfamily = data$family,

R/guide-colorbar.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ GuideColourbar <- ggproto(
379379
vjust = 0, hjust = 0,
380380
width = width, height = height,
381381
default.units = "npc",
382-
gp = gpar(col = NA, fill = decor$colour)
382+
gp = ggpar(col = NA, fill = decor$colour)
383383
)
384384
} else if (params$display == "gradient") {
385385
check_device("gradients", call = expr(guide_colourbar()))
@@ -394,7 +394,7 @@ GuideColourbar <- ggproto(
394394
vertical = list(x1 = unit(0.5, "npc"), x2 = unit(0.5, "npc"))
395395
)
396396
gradient <- inject(linearGradient(decor$colour, value, !!!position))
397-
grob <- rectGrob(gp = gpar(fill = gradient, col = NA))
397+
grob <- rectGrob(gp = ggpar(fill = gradient, col = NA))
398398
}
399399

400400
frame <- element_grob(elements$frame, fill = NA)

R/guide-colorsteps.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ GuideColoursteps <- ggproto(
204204

205205
size <- abs(decor$max - decor$min)
206206
just <- as.numeric(decor$min > decor$max)
207-
gp <- gpar(col = NA, fill = decor$colour)
207+
gp <- ggpar(col = NA, fill = decor$colour)
208208
if (params$direction == "vertical") {
209209
grob <- rectGrob(
210210
x = 0, y = decor$min,

0 commit comments

Comments
 (0)