2012-04-26 82 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