@@ -174,6 +174,7 @@ GuideLegend <- ggproto(
174
174
key = " legend.key" ,
175
175
key_height = " legend.key.height" ,
176
176
key_width = " legend.key.width" ,
177
+ key_just = " legend.key.justification" ,
177
178
text = " legend.text" ,
178
179
theme.title = " legend.title" ,
179
180
spacing_x = " legend.key.spacing.x" ,
@@ -373,6 +374,9 @@ GuideLegend <- ggproto(
373
374
elements $ key <-
374
375
ggname(" legend.key" , element_grob(elements $ key ))
375
376
}
377
+ if (! is.null(elements $ key_just )) {
378
+ elements $ key_just <- valid.just(elements $ key_just )
379
+ }
376
380
377
381
elements $ text <-
378
382
label_angle_heuristic(elements $ text , elements $ text_position , params $ angle )
@@ -387,6 +391,7 @@ GuideLegend <- ggproto(
387
391
build_decor = function (decor , grobs , elements , params ) {
388
392
389
393
key_size <- c(elements $ width_cm , elements $ height_cm )
394
+ just <- elements $ key_just
390
395
idx <- seq_len(params $ n_breaks )
391
396
392
397
key_glyphs <- lapply(idx , function (i ) {
@@ -404,7 +409,15 @@ GuideLegend <- ggproto(
404
409
height <- vapply(glyph , get_attr , which = " height" , default = 0 , numeric (1 ))
405
410
height <- max(height , 0 , key_size [2 ], na.rm = TRUE )
406
411
407
- grob <- gTree(children = inject(gList(elements $ key , !!! glyph )))
412
+ vp <- NULL
413
+ if (! is.null(just )) {
414
+ vp <- viewport(
415
+ x = just [1 ], y = just [2 ], just = just ,
416
+ width = unit(width , " cm" ), height = unit(height , " cm" )
417
+ )
418
+ }
419
+
420
+ grob <- gTree(children = inject(gList(elements $ key , !!! glyph )), vp = vp )
408
421
attr(grob , " width" ) <- width
409
422
attr(grob , " height" ) <- height
410
423
grob
0 commit comments