Подтвердить что ты не робот

Текст легенды обрезания в 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 строках? В настоящий момент семь предметов легенды находятся рядом друг с другом. Я бы предпочел, чтобы они отображались в два ряда (например, четыре города в верхней строке и три города во втором ряду).

Большое спасибо заранее.

4b9b3361

Ответ 1

Хорошо, учитывая ваши изменения, вы, вероятно, хотели этого:

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

Но вы можете обнаружить, что по-прежнему хотите использовать технику обертывания текста, чтобы она соответствовала.

Ответ 2

В вашем примере:

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"