File: guides-grid.R

package info (click to toggle)
r-cran-ggplot2 3.5.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 9,944 kB
  • sloc: sh: 15; makefile: 5
file content (34 lines) | stat: -rw-r--r-- 1,271 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Produce a grob to be used as for panel backgrounds
# minor and major grid line positions are given as fractional positions and will
# be converted to `'native'` units by polylineGrob() downstream
#
# Any minor lines coinciding with major lines will be removed
guide_grid <- function(theme, x.minor, x.major, y.minor, y.major) {

  x.minor <- setdiff(x.minor, x.major)
  y.minor <- setdiff(y.minor, y.major)

  ggname("grill", grobTree(
    element_render(theme, "panel.background"),
    if (length(y.minor) > 0) element_render(
      theme, "panel.grid.minor.y",
      x = rep(0:1, length(y.minor)), y = rep(y.minor, each = 2),
      id.lengths = rep(2, length(y.minor))
    ),
    if (length(x.minor) > 0) element_render(
      theme, "panel.grid.minor.x",
      x = rep(x.minor, each = 2), y = rep(0:1, length(x.minor)),
      id.lengths = rep(2, length(x.minor))
    ),
    if (length(y.major) > 0) element_render(
      theme, "panel.grid.major.y",
      x = rep(0:1, length(y.major)), y = rep(y.major, each = 2),
      id.lengths = rep(2, length(y.major))
    ),
    if (length(x.major) > 0) element_render(
      theme, "panel.grid.major.x",
      x = rep(x.major, each = 2), y = rep(0:1, length(x.major)),
      id.lengths = rep(2, length(x.major))
    )
  ))
}