Добавление линий сетки в ggplot с фоновым изображением - PullRequest
0 голосов
/ 25 мая 2020

Я сделал график, используя ggplot2, и использую график c в качестве фона. Теперь я хочу добавить сетки, чтобы было понятнее, но я застрял. Моя функция ggplot2:

library(ggplot2)
library(ggpubr)

ggplot(df), aes(x = Year, y = Number)) +
  background_image(jpg) +
  geom_line(color = "black", size = 2) +
  labs(title = "Title", y = "Name1", x = "Name2")

Буду благодарен за любую помощь.

1 Ответ

2 голосов
/ 25 мая 2020

Используя пример из ggpubr::background_image, этого можно достичь, задав panel.background = element_blank() и panel.ontop = TRUE. Попробуйте это:

library(ggpubr)
#> Loading required package: ggplot2
library(ggplot2)

img.file <- system.file(file.path("images", "background-image.png"),
                        package = "ggpubr")
img <- png::readPNG(img.file)

# Plot with background image
ggplot(iris, aes(Species, Sepal.Length))+
  background_image(img)+
  geom_boxplot(aes(fill = Species), color = "white")+
  theme(panel.background = element_blank(),
        panel.ontop = TRUE)

Создано 25.05.2020 с помощью пакета реплекс (v0.3.0)

РЕДАКТИРОВАТЬ: Альтернативным подходом было бы рисование линий сетки вручную с использованием geom_vline и geom_hline:

library(ggpubr)
#> Loading required package: ggplot2
library(ggplot2)

img.file <- system.file(file.path("images", "background-image.png"),
                        package = "ggpubr")
img <- png::readPNG(img.file)

# Plot with background image
ggplot(iris, aes(Species, Sepal.Length))+
  background_image(img) +
  geom_vline(aes(xintercept = Species), color = "white") +
  geom_hline(yintercept = c(5, 6, 7, 8), color = "white") +
  geom_boxplot(aes(fill = Species), color = "white")

Создано 26.05.2020 с помощью пакета REPEX (v0.3.0)

...