Frage an ggplot2, r – Legendentext in ggplot2 umbrechen

27

Bei der Erstellung von Diagrammen mit ggplot2 habe ich einige lange Legendennamen, die ich über zwei Zeilen umbrechen möchte. Zum Beispiel:

<code>a <- (1:10)
b <- c(1,1.5,2,4,5,5.3,7,9,9.5,9.8)
places = c("Birmingham","Chester-le-street","Cambridge", "Newcastle-upon-Tyne","Peterborough","Cambridge", "Newcastle-upon-Tyne","Peterborough","Liverpool","Stratford-upon-Avon")
df1 = data.frame(a,b,places)
library(ggplot2)
i = ggplot(df1, aes(x=a, y=b)) + geom_point(aes(colour = places), size=3) + opts(legend.position="bottom")
</code>

Wie würde ich die Legendenelemente umschließen, wenn das Kästchen so eingestellt ist, dass es unten ist - etwa in 2 oder 3 Zeilen? Im Moment stehen die sieben Gegenstände der Legende nebeneinander. Ich würde es vorziehen, wenn sie in zwei Reihen angezeigt werden (mit beispielsweise vier Städten in der obersten Reihe und drei Städten in der zweiten Reihe).

Vielen Dank im Voraus.

Ich würde Ihre Frage in zwei getrennte Fragen aufteilen. Eine davon würde durch meine Antwort beantwortet (den Text wie in der ursprünglichen Frage angegeben einschließen) und eine zweite, wie man mehrspaltige Legenden mit ggplot erstellt. PS: Die Position der Legende sollte sich für die Antwort auf Ihre Frage nicht wesentlich ändern. Etienne Low-Décarie

Deine Antwort

2   die antwort
27

<code>library(scales)
i + guides(colour = guide_legend(nrow = 2))
</code>

Möglicherweise möchten Sie jedoch auch weiterhin die Textumbruch-Technik anwenden, um sie an Ihre Bedürfnisse anzupassen.

Außerdemcolourfunktioniert dies auch für andere ästhetiken wie zbguides(linetype=guide_legend(nrow=2)). Paul Rougieux
20

Aus Ihrem Beispiel:

<code>df1$places<-sub("-", "- \n ", df1$places)  

i = ggplot(df1, aes(x=a, y=b)) + geom_point(aes(colour = places), size=3)
</code>

Anmerkungen: - Sie können gsub verwenden, um alle "-" durch "- \ n" zu ersetzen.

@KatieT Sie müssen klarer sein, ob Sie das einpacken möchtenBeschriftungen in der Legende über 2 Zeilen, oder dieLegendenelemente selbst oder beides. Sie haben nur erwähnt, dass Sie die 'Legendennamen' umschließen, worauf sich diese Antwort bezieht. joran
Danke @Etienne Low-Décarie, aber das ist nicht ganz das, was ich will. Ich möchte immer noch die Legende unten sehen, aber der Legendentext ist sehr lang. Anstelle der 7 Beschriftungen in einer langen Reihe möchte ich, dass sie in zwei Reihen angezeigt werden (wobei das Diagramm eine ähnliche Form hat wie in Ihrem Beispiel). KT_1
Weißt du, wie man das mit dem Titel der Legende macht? user1685185

Verwandte Fragen