Skip to content

Commit 9df62a6

Browse files
author
Kirill Müller
committed
New themes panel.margin.x and panel.margin.y
Fixes #839 Conflicts: NEWS R/facet-grid-.r Resolved trivially.
1 parent 4d99445 commit 9df62a6

File tree

6 files changed

+20
-9
lines changed

6 files changed

+20
-9
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ ggplot2 0.9.3.1.99
77
* `ggpcp()`, `ggfluctuation()`, `ggmissing()`, `ggstructure()`, and
88
`ggorder()` are now defunct and have been removed.
99

10+
* theme: new theme settings panel.margin.x and panel.margin.y (units) allow
11+
specifying horizontal and vertical gap between panels in facetted plots (for
12+
both grid and wrap). (Kirill Müller. Fixes #839)
1013

1114
ggplot2 0.9.3.1
1215
----------------------------------------------------------------

R/facet-grid-.r

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,9 @@ build_strip <- function(panel, label_df, labeller, theme, side = "right") {
299299
strips <- gtable_matrix(name, grobs, heights = heights, widths = widths)
300300

301301
if (horizontal) {
302-
gtable_add_col_space(strips, theme$panel.margin)
302+
gtable_add_col_space(strips, theme$panel.margin.x %||% theme$panel.margin)
303303
} else {
304-
gtable_add_row_space(strips, theme$panel.margin)
304+
gtable_add_row_space(strips, theme$panel.margin.y %||% theme$panel.margin)
305305
}
306306
}
307307

@@ -314,14 +314,14 @@ facet_axes.grid <- function(facet, panel, coord, theme) {
314314
grobs <- lapply(panel$ranges[cols], coord_render_axis_h,
315315
coord = coord, theme = theme)
316316
axes$b <- gtable_add_col_space(gtable_row("axis-b", grobs),
317-
theme$panel.margin)
317+
theme$panel.margin.x %||% theme$panel.margin)
318318

319319
# Vertical axes
320320
rows <- which(panel$layout$COL == 1)
321321
grobs <- lapply(panel$ranges[rows], coord_render_axis_v,
322322
coord = coord, theme = theme)
323323
axes$l <- gtable_add_row_space(gtable_col("axis-l", grobs),
324-
theme$panel.margin)
324+
theme$panel.margin.y %||% theme$panel.margin)
325325

326326
axes
327327
}
@@ -382,8 +382,8 @@ facet_panels.grid <- function(facet, panel, coord, theme, geom_grobs) {
382382

383383
panels <- gtable_matrix("panel", panel_matrix,
384384
panel_widths, panel_heights, respect = respect)
385-
panels <- gtable_add_col_space(panels, theme$panel.margin)
386-
panels <- gtable_add_row_space(panels, theme$panel.margin)
385+
panels <- gtable_add_col_space(panels, theme$panel.margin.x %||% theme$panel.margin)
386+
panels <- gtable_add_row_space(panels, theme$panel.margin.y %||% theme$panel.margin)
387387

388388
panels
389389
}

R/facet-wrap.r

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,13 @@ facet_render.wrap <- function(facet, panel, coord, theme, geom_grobs) {
164164
# If not listed, assume is unit(1, "null")
165165
widths <- list(
166166
axis_l = width_cm(grobs$axis_l),
167-
vspace = ifelse(layout$COL == ncol, 0, width_cm(theme$panel.margin))
167+
vspace = ifelse(layout$COL == ncol, 0, width_cm(theme$panel.margin.x %||% theme$panel.margin))
168168
)
169169
heights <- list(
170170
panel = unit(aspect_ratio, "null"),
171171
strip_t = height_cm(grobs$strip_t),
172172
axis_b = height_cm(grobs$axis_b),
173-
hspace = ifelse(layout$ROW == nrow, 0, height_cm(theme$panel.margin))
173+
hspace = ifelse(layout$ROW == nrow, 0, height_cm(theme$panel.margin.y %||% theme$panel.margin))
174174
)
175175

176176
col_widths <- compute_grob_widths(info, widths)

R/theme-defaults.r

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ theme_grey <- function(base_size = 12, base_family = "") {
4646
panel.grid.major = element_line(colour = "white"),
4747
panel.grid.minor = element_line(colour = "grey95", size = 0.25),
4848
panel.margin = unit(0.25, "lines"),
49+
panel.margin.x = NULL,
50+
panel.margin.y = NULL,
4951

5052
strip.background = element_rect(fill = "grey80", colour = NA),
5153
strip.text.x = element_text(),

R/theme-elements.r

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ el_def <- function(class = NULL, inherit = NULL, description = NULL) {
306306
panel.background = el_def("element_rect", "rect"),
307307
panel.border = el_def("element_rect", "rect"),
308308
panel.margin = el_def("unit"),
309+
panel.margin.x = el_def("unit", "panel.margin"),
310+
panel.margin.y = el_def("unit", "panel.margin"),
309311
panel.grid.major.x = el_def("element_line", "panel.grid.major"),
310312
panel.grid.major.y = el_def("element_line", "panel.grid.major"),
311313
panel.grid.minor.x = el_def("element_line", "panel.grid.minor"),

R/theme.r

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ print.theme <- function(x, ...) str(x)
135135
#' (\code{element_rect}; inherits from \code{rect}) \cr
136136
#' panel.margin \tab margin around facet panels
137137
#' (\code{unit}) \cr
138+
#' panel.margin.x \tab horizontal margin around facet panels
139+
#' (\code{unit}; inherits from \code{panel.margin}) \cr
140+
#' panel.margin.y \tab vertical margin around facet panels
141+
#' (\code{unit}; inherits from \code{panel.margin}) \cr
138142
#' panel.grid \tab grid lines
139143
#' (\code{element_line}; inherits from \code{line}) \cr
140144
#' panel.grid.major \tab major grid lines
@@ -271,7 +275,7 @@ print.theme <- function(x, ...) str(x)
271275
#' k + theme(strip.text.x = element_text(colour = "red", angle = 45, size = 10,
272276
#' hjust = 0.5, vjust = 0.5))
273277
#' k + theme(panel.margin = unit(5, "lines"))
274-
#' k + theme(panel.margin = unit(0, "lines"))
278+
#' k + theme(panel.margin.y = unit(0, "lines"))
275279
#'
276280
#'
277281
#' # Modify a theme and save it

0 commit comments

Comments
 (0)