2012-10-19 37 views
12

Tôi đã nạp gói mạng. Sau đó, tôi chạy:Vẽ xyplot với đường hồi quy trên đồ họa mạng

> xyplot(yyy ~ xxx | zzz, panel = function(x,y) { panel.lmline(x,y)} 

Điều này tạo ra các ô biểu đồ, hiển thị đường hồi quy, không có xyplots. Tôi đang làm panel.lmline mà không hoàn toàn hiểu cách nó được thực hiện. Tôi biết có một đối số dữ liệu, dữ liệu là gì, biết rằng tôi có 3 biến số xxx, yyy, zzz?

Trả lời

22

Tất cả các bạn thực sự cần là:

xyplot(yyy ~ xxx | zzz, type = c("p","r")) 

nơi tranh luận type được ghi chép lại trong ?panel.xyplot

tôi sẽ không trích dẫn tất cả nhưng

type: character vector consisting of one or more of the following: 
     ‘"p"’, ‘"l"’, ‘"h"’, ‘"b"’, ‘"o"’, ‘"s"’, ‘"S"’, ‘"r"’, 
     ‘"a"’, ‘"g"’, ‘"smooth"’, and ‘"spline"’. If ‘type’ has more 
     than one element, an attempt is made to combine the effect of 
     each of the components. 

     The behaviour if any of the first six are included in ‘type’ 
     is similar to the effect of ‘type’ in ‘plot’ (type ‘"b"’ is 
     actually the same as ‘"o"’). ‘"r"’ adds a linear regression 
     line (same as ‘panel.lmline’, except for default graphical 
     parameters). ‘"smooth"’ adds a loess fit (same as 
     ‘panel.loess’). ‘"spline"’ adds a cubic smoothing spline fit 
     (same as ‘panel.spline’). ‘"g"’ adds a reference grid using 
     ‘panel.grid’ in the background (but using the ‘grid’ argument 
     is now the preferred way to do so). ‘"a"’ has the effect of 
     calling ‘panel.average’, which can be useful for creating 
     interaction plots. The effect of several of these 
     specifications depend on the value of ‘horizontal’. 

Bạn có thể, như tôi đã giới thiệu ở trên, thêm các chuỗi này bằng cách chuyển type vectơ ký tự. Về cơ bản, mã của bạn đã cho kết quả tương tự như type = "r", tức là chỉ đường hồi quy được vẽ.

Đối số panel của xyplot và chức năng Vẽ lưới nói chung là cực kỳ mạnh mẽ nhưng không phải lúc nào cũng được yêu cầu đối với những thứ rất phức tạp. Về cơ bản, bạn cần phải vượt qua panel một chức năng sẽ vẽ mọi thứ trên mỗi ô của ô. Để sửa đổi mã của bạn để thực hiện những gì bạn muốn, chúng tôi cũng cần phải thêm một cuộc gọi đến panel.xyplot(). Ví dụ .:

xyplot(yyy ~ xxx | zzz, 
     panel = function(x, y, ...) { 
       panel.xyplot(x, y, ...) 
       panel.lmline(x, y, ...) 
       }) 

Nó cũng rất hữu ích để vượt qua tất cả các đối số khác về chức năng bảng điều khiển cá nhân qua ..., trong trường hợp này bạn cần ... như một cuộc tranh cãi trong các chức năng ẩn danh của bạn (như hình trên). Trong thực tế, có lẽ bạn có thể viết rằng chức năng bảng điều khiển phần như:

xyplot(yyy ~ xxx | zzz, 
     panel = function(...) { 
       panel.xyplot(...) 
       panel.lmline(...) 
       }) 

nhưng tôi thường thêm xy đối số chỉ để được rõ ràng.

+0

Gavin cảm ơn bạn đã trả lời. – Selvam

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