2012-07-09 46 views
53

Có ai biết cách tôi có thể kiểm soát thứ tự truyền thuyết trong ggplot2 không?Kiểm soát thứ tự hiển thị chú thích ggplot2

Từ những gì tôi có thể thấy thứ tự xuất hiện liên quan đến nhãn tỷ lệ thực tế thay vì thứ tự khai báo tỷ lệ. Thay đổi tiêu đề quy mô sẽ thay đổi thứ tự. Tôi đã thực hiện một ví dụ nhỏ bằng cách sử dụng tập dữ liệu kim cương để làm nổi bật điều này. Tôi đang cố gắng sử dụng ggplot2 cho một loạt các lô và tôi muốn làm cho một biến xuất hiện ở bên phải trong tất cả chúng. Hiện tại, điều này chỉ xảy ra ở một số trong số đó, và tôi đang thua lỗ về cách thực thi thứ tự mong muốn của mình trong khi giữ lại các nhãn tỷ lệ thích hợp.

library(ggplot2) 
diamond.data <- diamonds[sample(nrow(diamonds), 1000), ] 
plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) + 
    geom_point() + opts(legend.position = "top", legend.box = "horizontal") 
plot # the legend will appear shape then colour 
plot + labs(colour = "A", shape = "B") # legend will be colour then shape 
plot + labs(colour = "Clarity", shape = "Cut") # legend will be shape then colour 
+2

liên quan (mặc dù câu hỏi này có một giải pháp tốt hơn): http://stackoverflow.com/questions/10035551/order-of-multiple-legends-hướng dẫn-what-là-the-tự động-logic-làm thế nào để thay đổi –

Trả lời

87

Trong 0.9.1, quy tắc xác định thứ tự của truyền thuyết là bí mậtkhông thể đoán trước. Bây giờ, trong phiên bản 0.9.2, dev trong github, bạn có thể sử dụng tham số để đặt thứ tự chú giải.

Dưới đây là ví dụ:

plot <- ggplot(diamond.data, aes(carat, price, colour = clarity, shape = cut)) + 
    geom_point() + opts(legend.position = "top") 

plot + guides(colour = guide_legend(order = 1), 
       shape = guide_legend(order = 2)) 

enter image description here

plot + guides(colour = guide_legend(order = 2), 
       shape = guide_legend(order = 1)) 

enter image description here

12

Dường như với tôi rằng thứ tự của chú giải được xác định bằng số ký tự trong tên tỷ lệ. (Vâng, tôi đồng ý, điều đó dường như kỳ lạ.)

Vì vậy, một cách giải quyết là để pad nhãn của bạn với không gian:

plot + labs(colour = "Clarity", shape = "  Cut") 

enter image description here


Tôi chân thành hy vọng ai đó đăng tải một giải pháp thích Sớm!

+0

Tôi nhận được rõ ràng sau đó cắt (đệm với không gian) trong huyền thoại của tôi nếu tôi làm wha bạn đã làm. packageDescription ("ggplot2") $ Version = 0.9.1 – Spacedman

+0

Tôi nên làm rõ rằng tôi thực sự muốn màu sắc rồi định hình (nghĩa là Clarity rồi Cut), chứ không phải Cut rồi Clarity giống như ví dụ của bạn. Tuy nhiên, tôi muốn có thể đặt tên cho bất cứ thứ gì và vẫn có thứ tự đó. – Alastair

+4

@Alastair Bây giờ rõ ràng rằng cách giải quyết của tôi sẽ chỉ hoạt động trong 'ggplot2' phiên bản 0.9.0 - cách giải quyết này không còn hoạt động trong phiên bản 0.9.1 nữa. Vì vậy, nếu bạn vẫn đang sử dụng 0.9.0 bạn có thể pad các chuỗi với không gian để có được thứ tự mong muốn của bạn. Như tôi đã nói, đó chỉ là giải pháp thay thế (và một giải pháp có thời hạn sử dụng hạn chế). – Andrie

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