ggplot2:将面板网格置于最前面

时间:2019-07-13 11:07:25

标签: r ggplot2

ggplot2绘图的面板网格被创建为位于绘图的背景上。我的问题是:是否可以修改以覆盖情节?

我可以部分看到用geom_hline()geom_vline()层代替网格的解决方案。但是,对于更复杂的图或在绘制地图时,这可能会很棘手,因此,我的问题仅涉及修改theme()的元素。

library(tidyverse)
df <- data.frame(x = c(1,2),
           y = c(1,2))
df %>% ggplot(aes(x, y)) +
  geom_area() + theme(
    panel.grid = element_line(color = "red")
  )

The red coloured grid is to be brought to the front:

geom_hline()geom_vline()替换网格的秘籍解决方案

grd_x <- seq(1, 2, length.out = 9)
grd_y <- seq(0, 2, length.out = 9)

df %>% ggplot(aes(x, y)) +
  geom_area() +
  geom_hline(yintercept = grd_y, col = "red") +
  geom_vline(xintercept = grd_x, col = "red")

The expected output.

1 个答案:

答案 0 :(得分:2)

如注释1所述,您可以使用theme(panel.ontop = TRUE)。但是,尝试此操作时,我再也看不到该图。因此,在将panel.ontop更改为TRUE时,需要确保面板的背景图像为空白:

library(tidyverse)
df <- data.frame(x = c(1,2),
                 y = c(1,2))
df %>% ggplot(aes(x, y)) +
  geom_area() + 
  theme(panel.grid = element_line(color = "red"),
    panel.ontop = TRUE, panel.background = element_rect(color = NA, fill = NA)
  )

enter image description here