Условное форматирование галочек меток ggplot без явного повторения всех векторов разрывов тиков

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

RS <- structure(list(k = 2:24, value = c(0.144146119842721, 0.222206168029977, 
0.291678571330934, 0.358919047522653, 0.426695606507329, 0.483301229692586, 
0.533728497594114, 0.580550588772305, 0.588601124711909, 0.635271587964058, 
0.650036125839732, 0.662220837971202, 0.675275766505185, 0.685226878333768, 
0.696300002606587, 0.705498413223437, 0.709250552710995, 0.716976400569355, 
0.72489699345261, 0.735887738035583, 0.741940077625176, 0.742248532545676, 
0.75185453741879)), .Names = c("k", "value"), row.names = c(NA, 
-23L), class = "data.frame")


    ggplot(RS)  + 
ggtitle("Root-mean square standard deviation error") + 
geom_line(aes(x = k, y = value), size = 1) + 
geom_point(aes(x = k, y = value), size = 2) + 
geom_segment(aes(x = RS[RS$k == 11, "k"], xend =  RS[RS$k == 11, "k"], y = min(RS[ , "value"]), yend = RS[RS$k == 11, "value"]), linetype = 2)  + 
scale_x_continuous(breaks = c(2, 5, 10, 11, 15, 20)) + theme_classic() +         
theme(axis.text.y = element_text(size=14), axis.text.x = element_text(size = 14), axis.title.x = element_text(size = 14), axis.title.y = element_text(size = 14))

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

Как я могу отформатировать значение xtick 11 без явного написания всего вектора, как в этом решении?

ggplot(RS)  + 
        ggtitle("Root-mean square standard deviation error") +
        geom_line(aes(x = k, y = value), size = 1) +
        geom_point(aes(x = k, y = value), size = 2) +
        geom_segment(aes(x = RS[RS$k == 11, "k"],
                         xend =  RS[RS$k == 11, "k"],
                         y = min(RS[ , "value"]),
                         yend = RS[RS$k == 11, "value"]),
                     linetype = 2)  +
        scale_x_continuous(breaks = c(2, 5, 10, 11, 15, 20, 24)) +
        theme_classic() +
        theme(axis.text.y = element_text(size=14),
              axis.text.x = element_text(size = 14,
                                         face=ifelse(c(2,5,10,11,15,20, 24) == 11,'bold','plain'),
                                         color =ifelse(c(2,5,10,11,15,20, 24) == 11,'red','black')),
              axis.title.x = element_text(size = 14),
              axis.title.y = element_text(size = 14))  

person Seymour    schedule 02.04.2018    source источник
comment
Возможный дубликат Изменить цвет определенной галочки в ggplot2   -  person Michael Harper    schedule 02.04.2018
comment
Я уже видел этот вопрос, но: 1) он не включает полужирное форматирование; 2) невозможно записать все возможные тики   -  person Seymour    schedule 02.04.2018
comment
Если вы ранее нашли похожий ответ на stackoverflow, важно упомянуть об этом в вопросе.   -  person Michael Harper    schedule 02.04.2018


Ответы (1)


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

ggplot(RS)  + 
  ggtitle("Root-mean square standard deviation error") + 
  geom_line(aes(x = k, y = value), size = 1) + 
  geom_point(aes(x = k, y = value), size = 2) + 
  geom_segment(aes(x = RS[RS$k == 11, "k"], xend =  RS[RS$k == 11, "k"], y = min(RS[ , "value"]), yend = RS[RS$k == 11, "value"]), linetype = 2)  + 
  scale_x_continuous(breaks = c(2, 5, 10, 11, 15, 20)) + theme_classic() +         
  theme(axis.text = element_text(size=14), 
        axis.title = element_text(size = 14),
        axis.text.x = element_text(colour = c('black', 'black', 'black', 'red', 'black', 'black'),
                                   face = c('plain', 'plain','plain', 'bold', 'plain', 'plain')))

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

Тот же подход можно использовать для изменения цвета галочки, добавив следующую строку в параметры theme:

axis.ticks.x = element_line(colour = c('black', 'black', 'black', 'red', 'black', 'black')))

person Michael Harper    schedule 02.04.2018
comment
Вы правы, я не правильно написал вопрос. Дело в том, как я могу это сделать, не записывая весь вектор всех x тиков? - person Seymour; 02.04.2018
comment
Это довольно существенное изменение вопроса. Может быть, лучше оставить это как есть, а затем открыть другой вопрос. - person Michael Harper; 02.04.2018