Skip to content

Commit 0e64d9c

Browse files
authored
Orientation-aware key glyphs (tidyverse#4757)
Fixes tidyverse#4732
1 parent afc03e0 commit 0e64d9c

8 files changed

+235
-4
lines changed

NAMESPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ export(draw_key_boxplot)
305305
export(draw_key_crossbar)
306306
export(draw_key_dotplot)
307307
export(draw_key_label)
308+
export(draw_key_linerange)
308309
export(draw_key_path)
309310
export(draw_key_point)
310311
export(draw_key_pointrange)

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ precedence between `bins` and `binwidth`. (@eliocamp, #4651)
7070
* Dots in `geom_dotplot()` are now correctly aligned to the baseline when
7171
`stackratio != 1` and `stackdir != "up"` (@mjskay, #4614)
7272

73+
* Key glyphs for `geom_boxplot()`, `geom_crossbar()`, `geom_pointrange()`, and
74+
`geom_linerange()` are now orientation-aware (@mjskay, #4732)
75+
7376
# ggplot2 3.3.5
7477
This is a very small release focusing on fixing a couple of untenable issues
7578
that surfaced with the 3.3.4 release

R/geom-linerange.r

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ geom_linerange <- function(mapping = NULL, data = NULL,
9393
GeomLinerange <- ggproto("GeomLinerange", Geom,
9494
default_aes = aes(colour = "black", size = 0.5, linetype = 1, alpha = NA),
9595

96-
draw_key = draw_key_vpath,
96+
draw_key = draw_key_linerange,
9797

9898
required_aes = c("x|y", "ymin|xmin", "ymax|xmax"),
9999

R/legend-draw.r

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ draw_key_boxplot <- function(data, params, size) {
106106
lty = data$linetype %||% 1,
107107
lineend = params$lineend %||% "butt",
108108
linejoin = params$linejoin %||% "mitre"
109-
)
109+
),
110+
vp = if (isTRUE(params$flipped_aes)) viewport(angle = -90)
110111
)
111112
}
112113

@@ -123,7 +124,8 @@ draw_key_crossbar <- function(data, params, size) {
123124
lty = data$linetype %||% 1,
124125
lineend = params$lineend %||% "butt",
125126
linejoin = params$linejoin %||% "mitre"
126-
)
127+
),
128+
vp = if (isTRUE(params$flipped_aes)) viewport(angle = -90)
127129
)
128130
}
129131

@@ -177,11 +179,21 @@ draw_key_dotplot <- function(data, params, size) {
177179
)
178180
}
179181

182+
#' @export
183+
#' @rdname draw_key
184+
draw_key_linerange <- function(data, params, size) {
185+
if (isTRUE(params$flipped_aes)) {
186+
draw_key_path(data, params, size)
187+
} else {
188+
draw_key_vpath(data, params, size)
189+
}
190+
}
191+
180192
#' @export
181193
#' @rdname draw_key
182194
draw_key_pointrange <- function(data, params, size) {
183195
grobTree(
184-
draw_key_vpath(data, params, size),
196+
draw_key_linerange(data, params, size),
185197
draw_key_point(transform(data, size = (data$size %||% 1.5) * 4), params)
186198
)
187199
}

man/draw_key.Rd

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 97 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)