Hier ist eine Lösung, die das Bearbeiten Ihrer Daten vermeidet:
group
Angenommen, Ihr Plot wird durch den Teil Ihres Datenrahmens mit Ebenen facettiert control, test1, test2
, und erstellen Sie dann eine Liste mit den folgenden Werten:
hospital_names <- list(
'Hospital#1'="Some Hospital",
'Hospital#2'="Another Hospital",
'Hospital#3'="Hospital Number 3",
'Hospital#4'="The Other Hospital"
)
Erstellen Sie dann eine Labeller-Funktion und übertragen Sie sie in Ihren facet_grid-Aufruf:
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)
...
Dabei werden die Ebenen des Datenrahmens verwendet, um die Liste der Krankenhausnamen zu indizieren und die Listenwerte (die richtigen Namen) zurückzugeben.
Bitte beachten Sie, dass dies nur funktioniert, wenn Sie nur eine Facettenvariable haben. Wenn Sie zwei Facetten haben, muss Ihre Etikettierfunktion für jede Facette einen anderen Namensvektor zurückgeben. Sie können dies mit etwas tun wie:
plot_labeller <- function(variable,value){
if (variable=='facet1') {
return(facet1_names[value])
} else {
return(facet2_names[value])
}
}
Wo facet1_names
und facet2_names
sind vordefinierte Listen von Namen, die durch die Facettenindexnamen indiziert sind ('Hostpital # 1' usw.).
Bearbeiten: Die obige Methode schlägt fehl, wenn Sie eine Variablen- / Wertekombination übergeben, die der Etikettierer nicht kennt. Sie können eine Ausfallsicherung für unbekannte Variablen wie folgt hinzufügen:
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))
}
}
Antwort angepasst an das Ändern von strip.text-Beschriftungen in ggplot mit Facette und Rand = TRUE
edit: WARNUNG : Wenn Sie diese Methode verwenden, um eine Zeichenspalte zu facettieren, erhalten Sie möglicherweise falsche Beschriftungen. Siehe diesen Fehlerbericht . in neueren Versionen von ggplot2 behoben.
ggplot(transform(iris, Species = c("S", "Ve", "Vi")[as.numeric(Species)]), aes(Petal.Length)) + stat_bin() + facet_grid(Species ~ .)