Comment puis-je produire des parcelles comme celle-ci?

J'ai rencontré ce genre d'intrigue qui effectue un regroupement hiérarchique sur un ensemble donné de données temporaires. Quelqu'un peut-il me dire comment dessiner de telles parcelles?

Je suis ouvert aux implémentations en R ou en Javascript, en particulier en utilisant d3.js

Entrez la description de l'image ici

Vous pouvez toujours créer l'intrigue à la main: avec les graphiques de base, le paramètre fig vous permet d'ajouter des tracés dans un autre tracé.

 # Sample data n <- 100 k <- 6 d <- matrix(rnorm(k*n),nc=k) d[,2] <- d[,1] # To help check the results colnames(d) <- LETTERS[1:k] x <- apply(d,2,cumsum) r <- hclust(dist(t(d))) # Plot op <- par(mar=c(0,0,0,0),oma=c(0,2,0,0)) plot(NA,ylim=c(.5,k+.5), xlim=c(0,4),axes=FALSE) # Dendrogram. See ?hclust for details. xc <- yc <- rep(NA,k) o <- 1:k o[r$order] <- 1:k for(i in 1:(k-1)) { a <- r$merge[i,1] x1 <- if( a<0 ) o[-a] else xc[a] y1 <- if( a<0 ) 0 else yc[a] b <- r$merge[i,2] x2 <- if( b<0 ) o[-b] else xc[b] y2 <- if( b<0 ) 0 else yc[b] lines( 3+c(y1,i,i,y2)/k, c(x1,x1,x2,x2), lwd=ki ) xc[i] <- (x1+x2)/2 yc[i] <- i } # Time series axis(2,1:k,colnames(d)[r$order],las=1) u <- par()$usr for(i in 1:k) { f <- c(0,3,i-.5,i+.5) f <- c( (f[1]-u[1])/(u[2]-u[1]), (f[2]-u[1])/(u[2]-u[1]), (f[3]-u[3])/(u[4]-u[3]), (f[4]-u[3])/(u[4]-u[3]) ) par(new=TRUE,fig=f) plot(x[,r$order[i]],axes=FALSE,xlab="",ylab="",main="",type="l",col="navy",lwd=2) box() } par(op) 

Dendogramme avec séries chronologiques

(Après avoir écrit ceci, je me rends compte qu'il est probablement plus facile à faire avec la layout en layout …)