Oto rozwiązanie, które pozwala uniknąć edycji danych:
Załóżmy, że twoja fabuła jest oparta na group
części ramki danych, która ma poziomy control, test1, test2
, a następnie utwórz listę nazwaną według tych wartości:
hospital_names <- list(
'Hospital#1'="Some Hospital",
'Hospital#2'="Another Hospital",
'Hospital#3'="Hospital Number 3",
'Hospital#4'="The Other Hospital"
)
Następnie utwórz funkcję „labeller” i wepchnij ją do wywołania 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)
...
Wykorzystuje poziomy ramek danych do indeksowania listy nazw szpitali, zwracając wartości listy (poprawne nazwy).
Pamiętaj, że działa to tylko wtedy, gdy masz tylko jedną zmienną aspektową. Jeśli masz dwa aspekty, funkcja etykietująca musi zwrócić inny wektor nazwy dla każdego aspektu. Możesz to zrobić za pomocą:
plot_labeller <- function(variable,value){
if (variable=='facet1') {
return(facet1_names[value])
} else {
return(facet2_names[value])
}
}
Gdzie facet1_names
i facet2_names
są wstępnie zdefiniowanymi listami nazw indeksowanych według nazw indeksów aspektów („Hostpital # 1” itp.).
Edycja: Powyższa metoda kończy się niepowodzeniem, jeśli przekażesz kombinację zmiennych / wartości, której etykietujący nie zna. Możesz dodać bezpieczny dla nieznanych zmiennych, takich jak to:
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))
}
}
Odpowiedź zaadaptowana ze sposobu zmiany etykiet strip.text w ggplot z facet i margin = TRUE
edycja: OSTRZEŻENIE : jeśli używasz tej metody do fasetowania według kolumny znaków , być może otrzymujesz nieprawidłowe etykiety. Zobacz ten raport o błędach . naprawione w ostatnich wersjach ggplot2.
ggplot(transform(iris, Species = c("S", "Ve", "Vi")[as.numeric(Species)]), aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ .)