2012-08-26 14 views
5

Moim celem jest skonstruowanie planszy poziomu (z pakietu siatki) z 4 lub więcej pojedynczych działek, dzielących ten sam kolor. Chociaż wydaje się to być stosunkowo proste przy użyciu funkcji, nie byłem w stanie znaleźć rozwiązania za pomocą macierzy danych. Przykładem levelplot pracy z tylko jednej matrycy:R: Wiele płaszczyzn równych z macierzy

d <- replicate(10,rnorm(10)) 
levelplot(d) 

znalazłem częściowych rozwiązań wykorzystujących wydrukować i podzielić pokazać wszystkie 4 levelplots na tym samym ekranie, ale to wymagałoby mnie albo wyłączyć kolor kluczowy, lub pokaż to na każdej działce. Żadne z tych rozwiązań nie jest całkowicie zadowalające.

Jeśli używam layoutu opcję w levelplot, tak:

levelplot(d, layout=c(2,2)) 

, uzyskać pożądany układ, z jednym dużym colorkey, główny i xlab/ylab, ale tylko jeden odbitek levelplot.

Próbowałem skonstruować formułę, która przynosi pożądany wynik, ale obawiam się, że moje rozumienie ramek danych, macierzy i macierzy nie jest wystarczająco głębokie, aby to zrobić. Jeśli ktokolwiek wie o działającym rozwiązaniu, byłbym bardzo wdzięczny. To, co sobie wyobrażam, to coś na linii (nie działającego kodu):

d1 <- replicate(10,rnorm(10)) 
d2 <- replicate(10,rnorm(10)) 
d3 <- replicate(10,rnorm(10)) 
d4 <- replicate(10,rnorm(10)) 

d <- list(d1,d2,d3,d4) 
di <- c(1,2,3,4) 

levelplot(x ~ y | di, data = d, layout=c(2,2)) 

Uwaga! Unikanie macierzy nie jest opcją. Niektóre z nich są uzyskiwane z nieprzetworzonych plików tekstowych.

Dziękuję z góry,

-JP

+0

Witamy na SO . Nie mam teraz czasu na właściwą odpowiedź, ale proszę spojrzeć na [tę stronę] (http://learnr.wordpress.com/2009/07/20/ggplot2-version-of-figures-in-lattice -multivariate-data-wizualizacja-with-r-part-6 /), gdzie można znaleźć kilka przykładów płaszczyzn, zarówno w "sieci", jak iw "ggplot2". Mam nadzieję, że doprowadzi cię to na właściwą drogę. Ach, i bardzo polecam 'ggplot2'. – ROLO

+0

Dziękuję - natknąłem się na 'ggplot2', ale' kratownica' pojawiła się prostsza w użyciu - ale nie mogę dyskutować z wynikami uzyskanymi przez przykład @ Andy-Garcii. Zajrzę do strony, którą zasugerowałeś. – ipoga

Odpowiedz

7

Korzystanie ggplot i reshape wraz z listy d:

require(reshape) 
require(ggplot2) 

ggplot(melt(d), aes(x=X1, y=X2)) + 
    facet_wrap(~ L1, ncol=2) + 
    geom_tile(aes(fill=value)) + 
    coord_equal() 

co daje:

enter image description here

+1

Dziękuję bardzo, to działa wspaniale. – ipoga