Как раскрасить несколько строк в geom_vline и сохранить порядок? - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу выделить среднее значение и медиану на графике гистограммы, используя вертикальные линии.красный для обозначения среднего и синий для обозначения медианы.Я могу рисовать разные кинемы, но не могу упорядочить цветовые коды в соответствии с метриками.

Я создал фрейм данных 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

Вот как выглядит d:

enter image description here

[1]: https://i.stack.imgur.com/OlOPG.jpg

В результирующей гистограмме ggplot выше порядок линий перевернут.Красный цвет обозначает медиану, а синий - средний.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Вам необходимо указать цвета вне оператора 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)
0 голосов
/ 10 февраля 2019

Поскольку вы указываете столбец с именами цветов и сопоставляете его с эстетикой цвета 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)

enter image description here

...