2011-08-03 20 views
8

Czy mogę podać parametr funkcji ggpairs w pakiecie GGally, aby użyć skali dziennika dla niektórych, a nie wszystkich zmiennych?Czy mogę powiedzieć, że ggpairs używa skali logowania?

+0

Czy próbowałeś w tym celu użyć funkcji aes()? Nic nie widzę na stronach pomocy sugerujących, że w ggpairs jest jakaś specjalna funkcja logowania, ale być może zakładano, że użyjesz typowych konwencji ggplot. –

Odpowiedz

9

Nie można podać parametr jako takiego (z powodów jest to, że funkcja tworzenia Wykresy rozrzutu predefiniowane jest bez skali, patrz ggally_points), ale można zmienić skalę potem używając getPlot i putPlot. Na przykład:

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

Dzięki za rozwiązanie, dobrze jest wiedzieć, jak manipulować wykresami. Spróbuję tego później; na razie wprowadzenie nowych logowanych zmiennych wydaje się łatwiejsze. –

2

Jest to zasadniczo taka sama odpowiedź jak Jean-Robert, ale wygląda na znacznie prostszą (przystępną). Nie wiem, czy jest to nowa funkcja, ale nie wygląda na to, że musisz już używać getPlot lub putPlot.

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

Oto funkcja, aby zastosować go w całej wielkiej matrycy. Podaj liczbę wierszy na wykresie i nazwę działki.

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

Aby wyjaśnić, ta opcja działa tak jak ggplot2 versoin 2.0.0 i GGally version 1.0.1 – Jthorpe

+1

ten kod nie działa dla mnie dla wartości innych niż 2. i dlaczego "g [(x + 1), i]", nie tylko "g [x, i]"?!? –

Powiązane problemy