2011-08-03 27 views
8

Tôi có thể cung cấp tham số cho hàm ggpairs trong gói GGally để sử dụng thang đo log cho một số biến chứ không phải tất cả?Tôi có thể yêu cầu ggpairs sử dụng thang đo log không?

+0

Bạn đã thử sử dụng hàm aes() cho mục đích này chưa? Tôi thấy không có gì trong các trang trợ giúp cho thấy có bất kỳ khả năng đăng nhập đặc biệt nào trong ggpairs, nhưng có thể giả sử bạn sẽ sử dụng các quy ước ggplot điển hình. –

Trả lời

9

Bạn không thể cung cấp các thông số như vậy (một lý do là chức năng tạo ra các điểm phân tán được xác định trước mà không quy mô, xem ggally_points), nhưng bạn có thể thay đổi quy mô sau đó sử dụng getPlotputPlot. Ví dụ:

custom_scale <- ggpairs(data.frame(x=exp(rnorm(1000)), y=rnorm(1000)), 
upper=list(continuous='points'), lower=list(continuous='points')) 
subplot <- getPlot(custom_scale, 1, 2) # retrieve the top left chart 
subplotNew <- subplot + scale_y_log10() # change the scale to log 
subplotNew$type <- 'logcontinuous' # otherwise ggpairs comes back to a fixed scale 
subplotNew$subType <- 'logpoints' 
custom_scale <- putPlot(custom_fill, subplotNew, 1, 2) 
+0

Cảm ơn giải pháp, bạn nên biết cách thao tác các biểu đồ. Tôi sẽ thử nó sau; hiện tại, việc giới thiệu các biến log'ed mới sẽ xuất hiện dễ dàng hơn. –

2

Đây thực chất là câu trả lời giống như Jean-Robert nhưng trông đơn giản hơn nhiều (có thể tiếp cận). Tôi không biết nếu đó là một tính năng mới nhưng có vẻ như bạn không cần sử dụng getPlot hoặc putPlot nữa.

custom_scale[1,2]<-custom_scale[1,2] + scale_y_log10() + scale_x_log10()

Đây là chức năng áp dụng trên một ma trận lớn. Cung cấp số hàng trong ô và tên của ô.

scalelog2<-function(x=2,g){ #for below diagonal 
for (i in 2:x){ 
    for (j in 1:(i-1)) { 
     g[i,(j)]<-g[i,(j)] + scale_x_continuous(trans='log2') + 
scale_y_continuous(trans='log2') 
         } } 
for (i in 1:x){ #for the bottom row 
     g[(x+1),i]<-g[(x+1),i] + scale_y_continuous(trans='log2') 
         } 
for (i in 1:x){ #for the diagonal 
     g[i,i]<-g[i,i]+ scale_x_continuous(trans='log2') } 
    return(g) } 
+0

Chỉ cần làm rõ, tùy chọn này hoạt động như ggplot2 versoin 2.0.0 và GGally phiên bản 1.0.1 – Jthorpe

+1

mã này không hoạt động đối với tôi cho các giá trị khác ngoài 2. và tại sao "g [(x + 1), i]", không chỉ "g [x, i]"?!? –

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