置于面板网格的前面

Kry*_*trý 5 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")
  )
Run Code Online (Sandbox Code Playgroud)

红色网格应放在最前面:

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")
Run Code Online (Sandbox Code Playgroud)

预期的输出。

小智 5

正如评论 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)
  )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述