2013-02-08 10 views
71

Ich versuche, den Titel einer Legende in ggplot2 zu entfernen:entfernen Legende Titel in ggplot

df <- data.frame(
    g = rep(letters[1:2], 5), 
    x = rnorm(10), 
    y = rnorm(10) 
) 

library(ggplot2) 
ggplot(df, aes(x, y, colour=g)) + 
    geom_line(stat="identity") + 
    theme(legend.position="bottom") 

enter image description here

Ich habe this question und keine der Lösungen gesehen scheint es für mich zu arbeiten . Die meisten geben einen Fehler darüber, wie opts veraltet ist und stattdessen theme verwenden. Ich habe auch verschiedene Versionen von theme(legend.title=NULL), theme(legend.title=""), theme(legend.title=element_blank) usw. Typische Fehlermeldungen sind versucht:

'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1) 
'theme_blank' is deprecated. Use 'element_blank' instead. (Deprecated; last used in version 0.9.1) 

Ich verwende ggplot2 zum ersten Mal seit der Version 0.9.3 veröffentlicht wurde und ich finde es schwierig, einige der Änderungen zu navigieren ...

+2

Sie können 'labs()' dafür verwenden: Fügen Sie die Zeile 'labs (color =" ")' zu Ihrem Code hinzu, der die obige Grafik erzeugte. – Dennis

Antwort

110

waren Sie fast da: nur theme(legend.title=element_blank())

ggplot(df, aes(x, y, colour=g)) + 
    geom_line(stat="identity") + 
    theme(legend.position="bottom") + 
    theme(legend.title=element_blank()) 

This page on Cookbook for R viele Details gibt hinzufügen, wie man CUS Legenden zu verändern.

7

Dies funktioniert auch und zeigt auch, wie die Legende Titel ändern:

ggplot(df, aes(x, y, colour=g)) + 
    geom_line(stat="identity") + 
    theme(legend.position="bottom") + 
    scale_color_discrete(name="") 
+4

Dies ersetzt den Titel durch eine leere Zeichenfolge und verursacht daher zusätzlichen Abstand zwischen der Beschriftung und der Legendenbox, die nur sichtbar wäre, wenn die Legende ein Feld oder einen Hintergrund mit einer anderen Farbe als der Position hätte. Es ist also in einfachen Fällen wie '' theme_bw() '' gut für eine schnelle und einfache Vorgehensweise, aber nicht die beste in Fällen, in denen die Legende eine Box um sie herum hat und irgendwo auf dem Plot-Bereich positioniert ist (meine übliche Vorgehensweise). – PatrickT

+0

+1 für die Beobachtung. Ich hatte das Problem mit zwei verschiedenen Legenden und dem Leerzeichen zwischen ihnen, das durch die obige Lösung erstellt wurde. Die Einstellung 'scale_color_manual (name = element_blank()) +' für die untere Legende löste es für mich – joaoal

0

Für Error: 'opts' is deprecated. Verwenden Sie stattdessen theme(). (Defunct; zuletzt in Version 0.9.1 verwendet) ' Ich ersetzte opts(title = "Boxplot - Candidate's Tweet Scores") durch labs(title = "Boxplot - Candidate's Tweet Scores"). Es funktionierte!

Verwandte Themen