2012-10-07 12 views
11

Chcę utworzyć fabułę wstążki (naprawdę jest to wykres liniowy wielu grup zmiennej kategorialnej), ale wyświetlany w stylu 3d. To będzie wyglądać mniej więcej tak:Jak utworzyć fabułę wstążki?

Ribbon plot example

Może więc chcielibyśmy, aby wykreślić następujące przykładowe dane jako działki Wstążka:

set.seed(10) 
fun <- function(i) data.frame(person=rep(LETTERS[i], 26), 
    letter=letters, count=sample(0:100, 26, T)) 
dat <- do.call(rbind, lapply(1:10, function(i) fun(i))) 

library(ggplot2) #a traditional 2-d line plot of the data 
ggplot(data=dat, aes(x=letter, y=count, group=person, color=person)) + 
    geom_line() 

jaki sposób można to osiągnąć w R? Wiem, że mogą istnieć lepsze sposoby wyświetlania danych, ale moim zainteresowaniem jest obecnie tworzenie fabuły stylu wstążki.

Odpowiedz

16

Mam nadzieję, że poniższy przykład pomożecie punkt w dobrym kierunku:

# data 
mat <- matrix(dpois(rep(1:20, 10), lambda=rep(10:1, each=20)), ncol=10) 

# 2d line plot 
matplot(mat, type="l", col="black", lty=1) 

# 3d ribbon plots 
par(mar = c(0, 1, 0, 1)) 
par(mfrow=c(1,2)) 
persp(z=mat[,rep(seq(ncol(mat)), each=2)], r=5, theta=320, phi=35, shade=0.5, 
     border=NULL, col=rep(c("#808080FE","#00000000"), each=nrow(mat)-1)) 
persp(z=mat[,rep(seq(ncol(mat)), each=2)], r=5, theta=320, phi=35, shade=0.5, 
     border=NA, col=rep(c("#808080FE","#00000000"), each=nrow(mat)-1)) 
par(mfrow=c(1,1)) 
par(mar = c(5,4,4,2)+.1) 

ribbon_example

Jak widać, podstawowa idea tutaj jest dość prosta. Organizujemy nasze wartości, które mają być nanoszone na matrycę, duplikujemy kolumny w macierzy tak, aby były w parach, a następnie wykreślamy wartości za pomocą persp(), upewniając się, że na przemian występują kolory przezroczyste i nieprzezroczyste. Jest jednak kilka trudnych do określenia szczegółów, szczególnie dotyczących tego, co zrobić z parametrem border. Zostawię ci te szczegóły.

Mam nadzieję, że to pomoże.

Powiązane problemy