Изменение меток на фасетном графике

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

#data snipet
 Substation       Date cluster  Time     Value  weekday 
1     511016 2013-01-17       1 00:00 0.6215941 Thursday       
2     511029 2013-01-17       1 00:00 0.5677445 Thursday       
3     511030 2013-01-17       1 00:00 0.6065458 Thursday       
4     511033 2013-01-08       2 00:00 0.3090885  Tuesday       
5     511034 2013-01-17       1 00:00 0.5263230 Thursday       
6     511035 2013-01-17       1 00:00 0.5267718 Thursday       



#current code

ggplot(substation_average_long, aes(Time, Value, group = Substation, colour = cluster)) +
  geom_line(colour = 'grey') +
  facet_wrap(.~cluster) +
  ylab('Substation power output') +
  ggtitle('Substation power output by cluster') +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

enter image description here

Итак, я должен изменить 1 на «кластер 1», 2 на «кластер 2» и так далее.

Самый быстрый способ, наверное, facet_wrap(~ cyl, labeller = label_both) ... больше вариантов смотрите ?labellers.

I_O 22.04.2022 21:35
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
1
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Один из вариантов — добавить as_labeller в качестве аргумента в facet_wrap.

library(tidyverse)

ggplot(df, aes(Time, Value, group = Substation, colour = cluster)) +
  geom_line(colour = 'grey') +
  facet_wrap(.~cluster, 
             labeller = as_labeller(c(`1` = "Cluster 1", `2` = "Cluster 2",
                                      `3` = "Cluster 3", `4` = "Cluster 4"))) +
  ylab('Substation power output') +
  ggtitle('Substation power output by cluster') +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Или мы можем сделать cluster фактором и определить метки. Тогда мы можем использовать labeller = label_parsed.

df %>%
    mutate(cluster = factor(cluster, labels = paste0("`", unique(
      paste("Cluster", df$cluster)), "`"))) %>%
    ggplot(aes(Time, Value, group = Substation, colour = cluster)) +
    geom_line(colour = 'grey') +
    facet_wrap(. ~ cluster,
               labeller = label_parsed) +
    ylab('Substation power output') +
    ggtitle('Substation power output by cluster') +
    theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Выход

enter image description here

Данные

df <- structure(list(Substation = c(511016L, 511029L, 511030L, 511033L, 
511034L, 511035L, 511016L, 511029L, 511030L, 511033L, 511034L, 
511035L, 511016L, 511029L, 511030L, 511033L, 511034L, 511035L
), Date = c("2013-01-17", "2013-01-17", "2013-01-17", "2013-01-08", 
"2013-01-17", "2013-01-17", "2013-01-17", "2013-01-17", "2013-01-17", 
"2013-01-08", "2013-01-17", "2013-01-17", "2013-01-17", "2013-01-17", 
"2013-01-17", "2013-01-08", "2013-01-17", "2013-01-17"), cluster = c(1L, 
1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 3L, 3L, 3L, 3L, 4L, 4L, 
4L), Time = c("00:00", "00:00", "00:00", "00:00", "00:00", "01:00", 
"01:00", "01:00", "01:00", "01:00", "02:00", "00:00", "01:00", 
"02:00", "03:00", "01:00", "02:00", "03:00"), Value = c(0.6215941, 
0.5677445, 0.6065458, 0.3090885, 0.526323, 0.5267718, 0.6215941, 
0.5677445, 0.6065458, 0.3090885, 0.526323, 0.5267718, 0.6215941, 
0.5677445, 0.6065458, 0.3090885, 0.526323, 0.5267718), weekday = c("Thursday", 
"Thursday", "Thursday", "Tuesday", "Thursday", "Thursday", "Thursday", 
"Thursday", "Thursday", "Tuesday", "Thursday", "Thursday", "Thursday", 
"Thursday", "Thursday", "Tuesday", "Thursday", "Thursday")), class = "data.frame", row.names = c(NA, 
-18L))

Блестящий. Есть ли что-то похожее на Python (Pandas), если вы (или кто-то еще) знаете там эквивалент?

Joe 22.04.2022 21:38

@Joe Я всего лишь новичок в Python, поэтому не уверен, что смогу помочь с этим. Вероятно, вам больше повезет, если вы опубликуете аналогичный вопрос специально для Python (Pandas). Удачи!

AndrewGB 22.04.2022 21:46

Другие вопросы по теме