Как изменить цвет точек геометрии с помощью ggline

Я хотел бы изменить цвет точек на моем графике

ggline

В настоящее время все они являются обратными точками, я хотел бы изменить их на мгновенные = красный, секунды = оранжевый, минуты = желтый, часы = серый, дни = черный, месяцы = светло-зеленый, годы = зеленый

Любые идеи, как это сделать, пожалуйста?

       > dput(DF6)
    structure(list(as.numeric.Final_DF.age. = c(49, 47, 53, 45, 49, 
    51, 45, 45, 51, 43, 49, 51, 45, 49, 37, 45, 47, 59, 55, 39, 53, 
    51, 43, 51, 49, 47, 41, 53, 49, 39, 47, 51, 55, 43, 59, 49, 53, 
    57, 47, 41, 55, 47, 53, 41, 57, 43, 49, 57, 55, 61), Final_DF.pswd_length = c(8L, 
    4L, 8L, 12L, 12L, 10L, 7L, 5L, 6L, 9L, 9L, 5L, 7L, 4L, 13L, 7L, 
    9L, 8L, 6L, 13L, 12L, 5L, 7L, 5L, 10L, 11L, 10L, 12L, 8L, 10L, 
    10L, 4L, 6L, 10L, 6L, 10L, 14L, 6L, 10L, 11L, 4L, 9L, 8L, 11L, 
    4L, 7L, 3L, 8L, 9L, 12L), units_of_time = c(1, 1, 1, 7, 2, 2, 
    2, 3, 1, 7, 1, 2, 5, 2, 7, 6, 7, 1, 1, 7, 2, 2, 7, 2, 2, 7, 7, 
    4, 2, 7, 7, 2, 1, 7, 1, 2, 4, 1, 7, 7, 2, 1, 2, 7, 1, 4, 1, 1, 
    1, 1)), row.names = c(NA, -50L), class = "data.frame")

    ggline(DF6, x = "units_of_time", y = "as.numeric.Final_DF.age.", 
       add = c("mean_se", "jitter"), 
       order = c("1", "2", "3", "4", "5", "6", "7"),
       ylab = "Age", xlab = "Time to crack") + scale_x_discrete(labels = c("instant", "seconds", "minutes", 
                                                                           "hours", "days", "months", "years")) +
  ggtitle("Time to crack password vs age")

person Marty    schedule 01.01.2021    source источник


Ответы (1)


Вы можете назначить color = "units_of_time" и использовать scale_color_manual, чтобы назначить им цвета по вашему выбору.

library(ggpubr)
library(ggplot2)

ggline(DF6, x = "units_of_time", y = "as.numeric.Final_DF.age.", 
       add = c("mean_se", "jitter"), 
       color =  "units_of_time",
       ylab = "Age", xlab = "Time to crack") + 
  scale_x_discrete(labels = c("instant", "seconds", "minutes", 
                              "hours", "days", "months", "years")) + 
  scale_color_manual(values = c("red", "orange", "yellow", "grey", 
                                "black", "light green", "green")) + 
  ggtitle("Time to crack password vs age") + 
  guides(color=FALSE)

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

person Ronak Shah    schedule 01.01.2021
comment
Спасибо, рискнув задать еще один вопрос, есть ли способ добавить линию регрессии к этому графику? - person Marty; 01.01.2021
comment
@Марти, взгляни на geom_smooth(). - person mhovd; 01.01.2021
comment
@mhovd спасибо, как мне добавить это в свой код? - person Marty; 01.01.2021
comment
@Marty Обычно это было бы так же просто, как добавить + geom_smooth(), но, похоже, это не работает для этих данных. - person Ronak Shah; 01.01.2021