2012-10-07 11 views
11

저는 리본 플롯을 만들고 싶습니다. (사실 그것은 범주 형 변수의 여러 그룹으로 이루어진 라인 플롯입니다.) 3D 스타일로 표시됩니다.리본 플롯을 만드는 방법은 무엇입니까?

Ribbon plot example

그래서 어쩌면 우리는 리본 플롯으로 다음 샘플 데이터를 플롯 할 것이다 : 이것은 R에

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() 

을 달성 할 수있는 방법이 다음과 같이 보일 것인가? 데이터를 표시하는 더 좋은 방법이있을 수 있지만 현재 리본 스타일 플롯을 만드는 데 관심이 있다는 것을 알고 있습니다.

답변

16

희망 아래의 예는 올바른 방향으로 지점에게 도움이 될 것입니다 : 당신이 볼 수 있듯이, 여기에 기본적인 아이디어는 매우 간단하다

# 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

. 우리는 우리의 값을 매트릭스로 구성하고 행렬을 쌍으로 이루어 지도록 복사 한 다음 persp()을 사용하여 값을 플롯하고 투명과 불투명 한 색상을 번갈아 가면서 확인합니다. 그러나 경계 매개 변수를 사용하여 수행 할 작업과 관련하여 해결해야 할 몇 가지 까다로운 세부 사항이 남아 있습니다. 나는 당신에게 그 세부 사항을 남길 것이다.

희망이 도움이됩니다.

관련 문제