Skip to content

Commit f97942a

Browse files
committed
Merge branch 'feature/839-facet-margin-2' of github.com:krlmlr/ggplot2 into krlmlr-feature/839-facet-margin-2
Conflicts: man/theme.Rd
2 parents 9f146db + acfe911 commit f97942a

File tree

7 files changed

+27
-10
lines changed

7 files changed

+27
-10
lines changed

NEWS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ ggplot2 0.9.3.1.99
4242

4343
* `fortify.SpatialPolygonsDataFrame()` now calls `polygons` without
4444
requiring the `sp` to be loaded first (@seancarmody, #879).
45+
* theme: new theme settings panel.margin.x and panel.margin.y (units) allow
46+
specifying horizontal and vertical gap between panels in facetted plots (for
47+
both grid and wrap). (Kirill Müller. Fixes #839)
48+
* `aes()` no more treats variables like `a..x..b as a calculated aesthetic.
49+
(@krlmlr, #834.)
4550

4651
* `aes()` no more treats variables like `a..x..b` as a calculated aesthetic
4752
(@krlmlr, #834).

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, height_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
@@ -93,6 +93,8 @@ theme_grey <- function(base_size = 12, base_family = "") {
9393
panel.grid.major = element_line(colour = "white"),
9494
panel.grid.minor = element_line(colour = "grey95", size = 0.25),
9595
panel.margin = unit(0.25, "lines"),
96+
panel.margin.x = NULL,
97+
panel.margin.y = NULL,
9698

9799
strip.background = element_rect(fill = "grey80", colour = NA),
98100
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
@@ -275,7 +279,7 @@ print.theme <- function(x, ...) str(x)
275279
#' k + theme(strip.text.x = element_text(colour = "red", angle = 45, size = 10,
276280
#' hjust = 0.5, vjust = 0.5))
277281
#' k + theme(panel.margin = unit(5, "lines"))
278-
#' k + theme(panel.margin = unit(0, "lines"))
282+
#' k + theme(panel.margin.y = unit(0, "lines"))
279283
#'
280284
#'
281285
#' # Modify a theme and save it

man/theme.Rd

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ The individual theme elements are:
113113
(\code{element_rect}; inherits from \code{rect}) \cr
114114
panel.margin \tab margin around facet panels
115115
(\code{unit}) \cr
116+
panel.margin.x \tab horizontal margin around facet panels
117+
(\code{unit}; inherits from \code{panel.margin}) \cr
118+
panel.margin.y \tab vertical margin around facet panels
119+
(\code{unit}; inherits from \code{panel.margin}) \cr
116120
panel.grid \tab grid lines
117121
(\code{element_line}; inherits from \code{line}) \cr
118122
panel.grid.major \tab major grid lines
@@ -238,7 +242,7 @@ k + theme(strip.background = element_rect(colour = "purple", fill = "pink",
238242
k + theme(strip.text.x = element_text(colour = "red", angle = 45, size = 10,
239243
hjust = 0.5, vjust = 0.5))
240244
k + theme(panel.margin = unit(5, "lines"))
241-
k + theme(panel.margin = unit(0, "lines"))
245+
k + theme(panel.margin.y = unit(0, "lines"))
242246

243247

244248
# Modify a theme and save it

0 commit comments

Comments
 (0)