Наложение каждого столбца с накоплением - PullRequest
3 голосов
/ 29 мая 2019

У меня есть пакетная диаграмма ggplot2, которая выглядит следующим образом:

# Example data
data <- data.frame(level = rep(1:3, 3),
                   values = c(20, 30, 25, 15, 10, 5, 18, 20, 30),
                   group = as.factor(rep(LETTERS[1:3], each = 3)))

# Draw plot without lines
library("ggplot2")
my_plot <- ggplot(data, aes(x = level, y = values, fill = group)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(breaks = c("A", "B", "C"),
                    values = c("forestgreen", "darkgoldenrod1", "brown2"))
my_plot

enter image description here

Теперь я хочу наложить каждый столбец этого столбца синей линией определенной высоты. Синие линии также должны быть представлены в легенде сюжета.

Данные для этих строк выглядят следующим образом:

# Data for lines
data_line <- data.frame(level = 1:3,
                        values = c(25, 40, 10),
                        group = as.factor("D"))

Вывод должен выглядеть следующим образом (изображение нарисовано краской):

enter image description here

Вопрос: Как я могу добавить эти данные в виде наложенных строк?

1 Ответ

2 голосов
/ 29 мая 2019

Один вариант с использованием geom_segment

my_plot + 
  geom_segment(data = data_line, 
               aes(x = level - 0.45,
                   xend = level + 0.45,
                   y = values,
                   yend = values, 
                   col = "D"), # 'fake' a legend
               size = 2,
               inherit.aes = FALSE) +
  scale_color_manual(name = NULL,
                     values = c(D = "#007fff")) + 
  guides(fill = guide_legend(order = 1),
         color = guide_legend(order = 2)) +
  theme(legend.margin = margin(t = -1, b = -15)) # trial and error

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...