Определение условных обозначений с помощью ggplot

#r #ggplot2

#r #ggplot2

Вопрос:

Я пытаюсь определить легенды моего графика в R.

У меня есть следующий код, это только демонстрация, реальные данные будут содержать 7-8 столбцов и до 20 выборок

 library(ggplot2)
library(RColorBrewer)


colors <-brewer.pal(n = 3, name = 'Paired')

ids <- c("TestA", "TestB", "TestC")
bg <-c(23, 13, 15)
sample1 <- c(21,15,17)
sample2 <- c(27,25,11)
sample3 <- c(24,14,18)
df <- data.frame(ids, bg, sample1,sample2,sample3)

ggplot(df)   
  geom_col(aes(x = ids, y = bg), size = 1, color = "grey", fill = "grey")  
  geom_point(aes(x = ids, y = sample1), size = 10, color=colors[1], group = 1)  
  geom_point(aes(x = ids, y = sample2), size = 10, color=colors[2], group = 1)  
  geom_point(aes(x = ids, y = sample3), size = 10, color=colors[3], group = 1)  
  ggtitle("Plot title")  
  xlab("x label")   ylab(" y label")  
  scale_colour_manual(values = c("95% PI"= "black",
                                  "Forecasts"  = "red",
                                  "Threshold" = "green"))
  

Он выдает следующий выводвведите описание изображения здесь

Как я могу добавить условные обозначения, подобные следующему рисунку, и убедиться, что цвет совпадает, т. Е. Цвет условных обозначений соответствует образцу или цвету bg

введите описание изображения здесь

Ответ №1:

Это что-то вроде того, чего ты хочешь?

 ggplot(df)   
  geom_col(aes(x = ids, y = bg, fill = "background"), size = 1, color = "grey")  
  geom_point(data = df %>% pivot_longer(cols = starts_with("sample"), names_to = "sample", values_to = "values"), aes(x = ids, y = values, color = sample), size = 10)  
  ggtitle("Plot title")  
  xlab("x label")   ylab(" y label")  
   scale_colour_manual(name = NULL, values = c("sample1"= "black",
                                 "sample2"  = "red",
                                 "sample3" = "green"),
                      labels = c("95% PI", "forecasts", "Threshold"))  
scale_fill_manual(name = NULL, values = c("background" = "grey"))  
  

введите описание изображения здесь

Комментарии:

1. Привет, Бен, имена примеров будут отличаться, они могут быть x135, y923, ssamp3 и т.д. Генерация R-кода обрабатывается отдельным приложением на основе выбранных входных данных, график генерируется нормально путем наложения каждой серии, единственная проблема заключается в генерации ключа / легенды и размещении ее внизу графика.

2. Добавить theme(legend.position="bottom")