2016-01-29 15 views
9

Tôi cố gắng để tái tạo ví dụ này đơn giản được đưa ra trong quá trình hồi quy Models Coursera R:Làm thế nào để sử dụng phương pháp hoàng thổ trong GGally :: ggpairs sử dụng chức năng bọc

require(datasets) 
data(swiss) 
require(GGally) 
require(ggplot2) 
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess"))) 

tôi mong đợi để xem một âm mưu cặp 6x6 - một scatterplot với các khoảng thời gian mượt mà và tin cậy hơn cho mỗi kết hợp của 6 biến trong dữ liệu thụy sĩ.

Tuy nhiên, tôi nhận được lỗi sau:

Error in display_param_error() : 'params' is a deprecated argument. Please 'wrap' the function to supply arguments. help("wrap", package = "GGally")

Tôi nhìn qua ggpairs()wrap() file giúp đỡ và đã cố gắng rất nhiều hoán vị của các chức năng wrap()wrap_fn_with_param_arg().

tôi có thể có được điều này để làm việc như mong đợi:

ggpairs(swiss, lower = list(continuous = wrap("smooth"))) 

Nhưng một khi tôi thêm phần hoàng thổ trong, nó không:

ggpairs(swiss, lower = list(continuous = wrap("smooth"), method = wrap("loess"))) 

tôi nhận được lỗi này khi tôi đã thử các dòng ở trên .

Error in value[3L] : The following ggpair plot functions are readily available: continuous: c('points', 'smooth', 'density', 'cor', 'blank') combo: c('box', 'dot', 'facethist', 'facetdensity', 'denstrip', 'blank') discrete: c('ratio', 'facetbar', 'blank') na: c('na', 'blank')

diag continuous: c('densityDiag', 'barDiag', 'blankDiag') diag discrete: c('barDiag', 'blankDiag') diag na: c('naDiag', 'blankDiag')

You may also provide your own function that follows the api of function(data, mapping, ...){ . . . } and returns a ggplot2 plot object Ex: my_fn <- function(data, mapping, ...){ p <- ggplot(data = data, mapping = mapping) + geom_point(...) p } ggpairs(data, lower = list(continuous = my_fn))

Function provided: loess

Rõ ràng là tôi đang nhập sai địa điểm. Bất cứ ai có thể giúp tôi hiểu làm thế nào để thêm một phần loess trong?

Lưu ý rằng sự cố của tôi khác với this one, vì tôi hỏi cách triển khai lỗi trong ggpairs vì đối số params không được chấp nhận.

Cảm ơn rất nhiều.

Trả lời

17

Một cách nhanh chóng là viết chức năng riêng của bạn ... hình dưới đây đã được chỉnh sửa từ một cung cấp bởi thông điệp ggpairs lỗi trong câu hỏi của bạn

library(GGally) 
library(ggplot2)  
data(swiss) 

# Function to return points and geom_smooth 
# allow for the method to be changed 
my_fn <- function(data, mapping, method="loess", ...){ 
     p <- ggplot(data = data, mapping = mapping) + 
     geom_point() + 
     geom_smooth(method=method, ...) 
     p 
    } 

# Default loess curve  
ggpairs(swiss[1:4], lower = list(continuous = my_fn)) 

enter image description here

# Use wrap to add further arguments; change method to lm 
ggpairs(swiss[1:4], lower = list(continuous = wrap(my_fn, method="lm"))) 

enter image description here


Điều này có thể là g Ives kiểm soát nhiều hơn một chút so với các đối số được truyền cho mỗi geon_

my_fn <- function(data, mapping, pts=list(), smt=list(), ...){ 
       ggplot(data = data, mapping = mapping, ...) + 
         do.call(geom_point, pts) + 
         do.call(geom_smooth, smt) 
       } 

# Plot 
ggpairs(swiss[1:4], 
     lower = list(continuous = 
         wrap(my_fn, 
          pts=list(size=2, colour="red"), 
          smt=list(method="lm", se=F, size=5, colour="blue")))) 
+2

Đó là rất hữu ích, cảm ơn rất nhiều! – meenaparam

7

Có lẽ bạn đang dùng các khóa học trực tuyến Mô hình hồi quy Coursera và cố gắng để chuyển đổi các tập tin Rmarkdown do khóa học để tập tin html, và đi qua này lỗi như tôi.

Con đường tôi đã cố gắng ra là:

require(datasets); data(swiss); require(GGally); require(ggplot2) 
g = ggpairs(swiss, lower = list(continuous = wrap("smooth", method = "lm"))) 
g 

Ngoài ra bạn có thể thử sử dụng method="loess", nhưng kết quả trông hơi khác so với đưa ra trong bài giảng. method = "lm" có thể phù hợp hơn như tôi thấy.

+0

Cảm ơn bạn đã đề xuất điều này, nhưng khi tôi thử mã của bạn, tôi gặp lỗi Lỗi: Thông số không xác định: phương thức – meenaparam

+1

@meenaparam Trong trường hợp của tôi, tôi không gặp lỗi. Một số đầu ra 'R.version': _platform_' x86_64-pc-linux-gnu', _os_ 'linux-gnu', _version.string_' phiên bản R 3.3.3 (2017-03-06) '. – Cryptor

+0

Điều này làm việc cho tôi bây giờ, họ phải có cập nhật 'ggally', cảm ơn! – meenaparam

1

Tôi cũng nghi ngờ bạn đang tham gia lớp học của Coursera. Mặc dù, tôi không thể tìm thấy bất kỳ repo github có chứa các ví dụ của ggplot.

Đây là những gì tôi đã làm để làm cho nó làm việc:

gp = ggpairs(swiss, lower = list(continuous = "smooth")) 
gp 
+0

Cảm ơn bạn @ Firefighter1017, nhưng điều này mang lại sự phù hợp tuyến tính ('lm') chứ không phải là một lời than vãn mượt mà như tôi muốn. Xem câu trả lời của @ scarain ở trên để làm cho mã của bạn hoạt động. – meenaparam

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