2017-04-19 5 views
0

Ich habe einen Datensatz mit zwei verschiedenen Variablen - Stadt und StadtEtikett wirkt Legende Symbole in ggplot

Als ich sie zeichnen und zwei Regressionsgeraden mit stat_smooth hinzufügen, die Legende Symbole werden nicht richtig angezeigt (sie erscheinen als zwei ' a ist):

ggplot(metrics, aes(x=popDensity, y= TPB, color = factor(type))) + geom_point() +theme_minimal() + stat_smooth(method = "lm", se = FALSE) + 
    geom_label_repel(aes(label= rownames(metrics)), size=3) + 
    theme(axis.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=12)) + 
    labs(x = expression(paste("density ", km^{2})), y = expression(paste("rating[![enter image description here][1]][1]")))+ 
    theme(legend.position="top", legend.direction="horizontal") 

Dies ist das Ergebnis: enter image description here

Allerdings, wenn ich die geom_label_repel Funktion entfernen, erhalte ich die Legende Symbole ich brauche - aber natürlich die Etiketten nicht angezeigt werden.

ggplot(metrics, aes(x=popDensity, y= TPB, color = factor(type))) + geom_point() +theme_minimal() + stat_smooth(method = "lm", se = FALSE) + 
    #geom_label_repel(aes(label= rownames(metrics)), size=3) + 
    theme(axis.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=12)) + 
    labs(x = expression(paste("density ", km^{2})), y = expression(paste("rating")))+ 
    theme(legend.position="top", legend.direction="horizontal") 

enter image description here

Warum dies geschieht und gibt es eine bekannte Lösung für dieses Problem? Gibt es außerdem eine Möglichkeit, den Titel des Legendentitels manuell zu ändern? Ich habe versucht, mit + theme(legend.title = "title"), sondern erhalten den Fehler:

Error in (function (el, elname) : 
    Element legend.title must be a element_text object. 

die Datenprobe:

> dput(metrics) 
structure(list(popDensity = c(4308, 27812, 4447, 5334, 4662, 
2890, 24623, 5847, 1689, 481, 4100), TPB = c(1, 0.5, 1, 1.3, 
0.8, 4, 0.2, 0.7, 5, 4, 2), type = c("City", "City", "City", 
"City", "City", "City", "Town", "Town", "Town", "Town", "Town" 
)), .Names = c("popDensity", "TPB", "type"), row.names = c("City1", 
"City2", "City3", "City4", "City5", "City6", "Town1", "Town2", 
"Town3", "Town4", "Town5"), class = "data.frame") 

Antwort

1

hinzufügen show.legend = FALSE in Ihrem geom_label_repel Anruf. Die a's scheint die Standardlegende für die Etiketten zu sein, die die geom_point überschreibt, die die gleichen Farben verwendet.

+0

Danke - wie sollte man den Titel der Legende von 'factor (type)' auf etwas anderes ändern? –

+0

Probieren Sie '+ scale_colour_manual (name =" etwas anderes ")' –

+0

Dann bekomme ich 'Fehler in f (...): Argument" Werte "fehlt, ohne Standard ' –