2013-03-19 29 views
5

Sử dụng aes_string làm cho nó dễ dàng để xây dựng các chức năng để có các thông số để vẽ:ggplot aes_string với sự tương tác

p <- ggplot(mtcars, aes_string(x="mpg", y="wt", group=interaction("cyl","gear"))) + 
    geom_point() 

Bây giờ để viết các chức năng

make_plot <- function(x,y, interact) { 
    p <- ggplot(mtcars, aes_string(x=x, y=y, group=interact)) + 
     geom_point() 
} 

và để gọi hàm

make_plot("mpg","wt",c("cyl","gear")) 

Nhưng ở đây tương tác không được sử dụng, nghĩa là, nó không được diễn giải. Tôi không muốn sử dụng các biến riêng biệt cho các bcos tương tác cùng chức năng có thể được sử dụng cho các lô khác. Làm thế nào tôi nên đi về làm cho các biến tương tác như vậy mà nó được chấp nhận và hiểu bởi ggplot?

+2

'paste0 ("tương tác (", paste0 (' "', tương tác, '"', sự sụp đổ = ",") , ")") '? – hadley

Trả lời

2

Theo this câu trả lời này nên làm việc (không có trích dẫn colnames):

p <- ggplot(mtcars, aes_string(x=x, y=y, group=paste0("interaction(", paste0(interact, 
    collapse = ", "), ")"))) + geom_point() 
Các vấn đề liên quan