2013-05-24 9 views
6

Tôi tự hỏi liệu có thể tạo một bộ số liệu tương tự trong ggplot2 và chỉ thay đổi dữ liệu bằng cách nào đó. Ví dụ: tôi có thể tạo một chức năng để thực hiện tác vụ này:tạo mẫu bằng cú pháp ggplot2?

plot1 <- function(data) ggplot(data) + geom_line(aes(x,y)) + theme_bw() 
plot1(data) 
plot1(newdata) 

Nhưng có thể lưu và sử dụng lại một bộ thành phần theo cách nào đó như thế này không? (Rõ ràng điều này không làm việc):

g <- geom_line(aes(x,y)) + theme_bw() 
ggplot(data) + g 
ggplot(newdata) + g 
+0

Bạn có thể đặt nó như là một chức năng, 'mẫu = function (d) ggplot (d) + geom_line (aes (x, y)) + theme_bw () ', mặc dù tôi đồng ý tôi đã thất vọng khi tôi không thể lưu các thành phần theo cách bạn thử ở đây. –

Trả lời

14

Có những +.gg phương pháp mô tả here

Đây là những %+%%+replace% mà sẽ cập nhật/thay thế các yếu tố trong ggplot s và themes

ví dụ

p <- ggplot(mtcars, aes(x =wt, y = mpg,colour = hp)) + geom_point() 

# change the variable mapped to y 
p %+% aes(y = am) 
# change the data set 
p %+% mtcars[1:10,] 

Hoặc bạn có thể kết hợp các yếu tố như một danh sách

ví dụ

# 
g <- list(geom_line(aes(x,y)),theme_bw()) 
ggplot(data) + g 
+0

Tôi nghĩ rằng nó sẽ là 'p + aes()', '% +%' chỉ dành cho dữ liệu – baptiste