Ось рішення, яке дозволяє уникнути редагування даних:
Скажіть, що ваш сюжет огранений group
частиною вашого фрейму даних, яка має рівні control, test1, test2
, а потім створіть список, названий цими значеннями:
hospital_names <- list(
'Hospital#1'="Some Hospital",
'Hospital#2'="Another Hospital",
'Hospital#3'="Hospital Number 3",
'Hospital#4'="The Other Hospital"
)
Потім створіть функцію "labeller" та натисніть її на виклик facet_grid:
hospital_labeller <- function(variable,value){
return(hospital_names[value])
}
ggplot(survey,aes(x=age)) + stat_bin(aes(n=nrow(h3),y=..count../n), binwidth=10)
+ facet_grid(hospital ~ ., labeller=hospital_labeller)
...
При цьому використовуються рівні кадру даних для індексації списку імен лікарень, повертаючи значення списку (правильні назви).
Зверніть увагу, що це працює лише в тому випадку, якщо у вас є лише одна змінна грані. Якщо у вас є дві грані, ваша функція маркера повинна повертати інший вектор імені для кожної грані. Ви можете зробити це за допомогою:
plot_labeller <- function(variable,value){
if (variable=='facet1') {
return(facet1_names[value])
} else {
return(facet2_names[value])
}
}
Де facet1_names
і facet2_names
є заздалегідь визначені списки імен, індексованих фасетними іменами індексу ("Хостпіталь №1" тощо).
Редагувати: вищевказаний метод не вдається, якщо ви передаєте комбінацію змінної / значення, про яку маркер не знає. Ви можете додати відмову від невідомих змінних, таких як ця:
plot_labeller <- function(variable,value){
if (variable=='facet1') {
return(facet1_names[value])
} else if (variable=='facet2') {
return(facet2_names[value])
} else {
return(as.character(value))
}
}
Відповідь адаптована до того, як змінити мітки strip.text у ggplot з фасетою та запасом = ІСТИНА
редагувати: ПОПЕРЕДЖЕННЯ : якщо ви використовуєте цей метод для фасетування стовпців символів , ви можете отримати неправильні мітки. Побачити цей звіт про помилку . виправлено в останніх версіях ggplot2.
ggplot(transform(iris, Species = c("S", "Ve", "Vi")[as.numeric(Species)]), aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ .)