Как раскрасить несколько строк в geom_vline и сохранить порядок?
Я хочу выделить среднее значение и медиану на графике гистограммы, используя вертикальные линии. красный для обозначения среднего и синий для обозначения медианы. Я могу рисовать разные виды кинеманов, но не могу заказать цветовые коды в соответствии с метриками.
Я создал фрейм данных d, который я передаю своему ggplot geom_vline. Фрейм данных содержит метрическое вычисление среднего значения и медианы и желаемых цветовых кодов.
d = data.frame(metric = c(
mean(titanic_merge_clean$Age, na.rm = TRUE),
median(titanic_merge_clean$Age, na.rm = TRUE) ),
colr = c("red", "blue"))
titanic_merge_clean %>%
ggplot(aes(x = Age)) +
geom_histogram() +
geom_vline(data = d, aes(xintercept = metric,
color = colr))
кадр данных d, который передается в ggplot geom_vline
Вот как это выглядит:
В полученной гистограмме ggplot выше порядок строк изменился. Красный цвет обозначает медиану, а синий - средний.
2 ответа
Вам нужно указать цвета за пределами aes
заявление
d = data.frame(metric = c(
mean(titanic_merge_clean$Age, na.rm = TRUE),
median(titanic_merge_clean$Age, na.rm = TRUE) ),
colr = c("red", "blue"))
titanic_merge_clean %>%
ggplot(aes(x = Age)) +
geom_histogram() +
geom_vline(data = d, aes(xintercept = metric), colour=d$colr)
Поскольку вы указываете столбец с именами цветов и сопоставляете его с эстетикой цвета ggplot, мы можем использовать scale_color_identity()
, Ваш пример не воспроизводим, поэтому вот простой пример с использованием mtcars
набор данных.
library(ggplot2)
my.data <- mtcars
my.data$color <- sample(c('red', 'blue'), nrow(my.data), replace = T)
g <- ggplot(data = my.data, aes(x = cyl, y = mpg, color = color)) +
geom_point() +
scale_color_identity(guide = 'legend')
print(g)
https://s tackru.com/images/6e4f6b8c25bebb39c8e d2b3b81c775126e9d1240.png