2012-04-26 65 views
23

在使用ggplot2生成圖形時,我有一些很長的圖例名稱,我希望將其包裝在兩行中。例如:在ggplot2中包裝圖例文本

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") 

我怎麼會去包裹的傳說物品時框設置爲在底部 - 說,在2條或3線?此刻傳說中的七個項目彼此相鄰。我寧願將它們顯示爲兩行(第一行中有四個城鎮,第二行有三個城鎮)。

非常感謝提前。

+0

我會把你的問題分成兩個單獨的問題。其中之一將回答我的迴應(包裝原始問題中顯而易見的文本),第二個如何使用ggplot創建多列傳奇。 PS:圖例的位置應該不會因您對問題的迴應而改變)。 – 2012-04-26 14:23:37

回答

21

好了,給您的編輯,你可能想要這個:

library(scales) 
i + guides(colour = guide_legend(nrow = 2)) 

但你可能會發現你仍然希望使用文本包裝技術,以適應它。

+0

除了'colour',這也適用於其他美學,例如'guides(linetype = guide_legend(nrow = 2))'。 – 2016-11-17 09:35:21

20

從你的例子:

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

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

enter image description here

注: - 您可以使用GSUB替換所有 「 - 」 用 「 - \ n」

+0

謝謝@ Etienne Low-Décarie,但這不是我想要的。我仍然希望傳說中的傳說,但傳奇文字很長。因此,我想讓它們放在兩行(保持圖形與您的示例中的圖形相似),而不是一個長行上的7個標籤。 – 2012-04-26 12:51:37

+0

@KatieT您需要更清楚地瞭解是否要在兩行中的圖例中包含_text labels_,或者_legend items_本身或兩者。你只提到包裝'傳說名字',這是這個答案的地址。 – joran 2012-04-26 13:52:53

+1

你知道如何用圖例的標題做到這一點嗎? – 2014-02-09 01:47:19