2012-04-26 49 views
23

Trong khi tạo biểu đồ bằng ggplot2, tôi có một số tên chú giải dài mà tôi muốn bọc lại trên hai dòng. Ví dụ:Văn bản chú thích bọc trong 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") 

Làm cách nào để chuyển các mục chú giải khi hộp được đặt ở dưới cùng - nói bằng 2 hoặc 3 dòng? Tại thời điểm này, bảy mục của truyền thuyết nằm cạnh nhau. Tôi thích rằng chúng được hiển thị trong hai hàng (với bốn thị trấn trên hàng đầu và ba thị trấn trên hàng thứ hai).

Rất cám ơn trước.

+0

Tôi sẽ chia câu hỏi của bạn thành hai câu hỏi riêng biệt. Một trong số đó sẽ được trả lời bằng câu trả lời của tôi (bao gồm văn bản như được hiển thị trong câu hỏi gốc) và một giây để biết cách tạo các huyền thoại nhiều cột với ggplot. PS: vị trí của truyền thuyết không nên thay đổi nhiều cho câu trả lời cho câu hỏi của bạn). –

Trả lời

21

Ok, do sửa đổi của bạn , bạn có thể muốn điều này:

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

Nhưng bạn có thể tìm thấy rằng bạn vẫn muốn sử dụng kỹ thuật gói văn bản là tốt, để làm cho nó phù hợp.

+0

Bên cạnh 'colour', điều này cũng phù hợp với các tính thẩm mỹ khác như' guides (linetype = guide_legend (nrow = 2)) '. –

20

Từ ví dụ của bạn:

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

Ghi chú: - Bạn có thể sử dụng gsub để thay thế tất cả các "-" với "- \ n"

+0

Cảm ơn @Etienne Low-Décarie, nhưng đây không phải là điều tôi muốn. Tôi vẫn muốn truyền thuyết ở botton, nhưng văn bản chú giải rất dài. Vì vậy, thay vì 7 nhãn trên một hàng dài, tôi muốn chúng trên hai hàng (giữ đồ thị một hình dạng tương tự như cách nó được trên ví dụ của bạn). –

+0

@KatieT Bạn cần phải rõ ràng hơn về việc bạn có muốn bao bọc nhãn _text_ trong chú giải trên 2 dòng hay chính các mục _legend_ hoặc cả hai. Bạn câu hỏi chỉ đề cập đến gói 'tên huyền thoại', đó là những gì câu trả lời này địa chỉ. – joran

+1

Bạn có biết cách làm điều này với tiêu đề của truyền thuyết không? –

Các vấn đề liên quan