varias torta superponer puntos porcentaje histogramas histograma hacer gráficos graficos grafico graficas ggplot con como r graphics ggplot2 lattice ggdendro

torta - superponer graficas en r ggplot



Reproducción de un gráfico de dendrograma de celosía con ggplot2 (4)

Como dice Ben, todo es posible. Se han realizado algunos trabajos para apoyar los dendrogramas. Andrie de Vries ha hecho un método fortify de objetos de árbol. Sin embargo, el gráfico resultante no es tan bonito como puedes ver.

El mosaico sería fácil de hacer. Para el dendrograma inspeccionaría plot.dendrogram (usando getAnywhere ) para ver cómo se calculan las coordenadas para los segmentos. Extraiga esas coordenadas y use geom_segment para trazar el dendrograma. Luego use viewports para trazar las fichas y el dendrograma juntos. Lo siento, no puedo dar un ejemplo, es mucho trabajo y es demasiado tarde.

espero que esto ayude

Aclamaciones

¿Es posible reproducir esta trama de celosía con ggplot2?

library(latticeExtra) data(mtcars) x <- t(as.matrix(scale(mtcars))) dd.row <- as.dendrogram(hclust(dist(x))) row.ord <- order.dendrogram(dd.row) dd.col <- as.dendrogram(hclust(dist(t(x)))) col.ord <- order.dendrogram(dd.col) library(lattice) levelplot(x[row.ord, col.ord], aspect = "fill", scales = list(x = list(rot = 90)), colorkey = list(space = "left"), legend = list(right = list(fun = dendrogramGrob, args = list(x = dd.col, ord = col.ord, side = "right", size = 10)), top = list(fun = dendrogramGrob, args = list(x = dd.row, side = "top", size = 10))))




EDITAR

A partir del 8 de agosto de 2011, el paquete ggdendro está disponible en CRAN Observe también que la función de extracción de dendrograma ahora se llama dendro_data lugar de cluster_data

Sí lo es. Pero por el momento tendrás que pasar por algunos aros:

  1. Instale el paquete ggdendro (disponible desde CRAN). Este paquete extraerá la información del clúster de varios tipos de métodos de clúster (incluidos Hclust y dendrogram ) con el propósito expreso de trazar en ggplot .
  2. Use gráficos de cuadrícula para crear ventanas gráficas y alinee tres gráficas diferentes.

El código:

Primero cargue las bibliotecas y configure los datos para ggplot:

library(ggplot2) library(reshape2) library(ggdendro) data(mtcars) x <- as.matrix(scale(mtcars)) dd.col <- as.dendrogram(hclust(dist(x))) col.ord <- order.dendrogram(dd.col) dd.row <- as.dendrogram(hclust(dist(t(x)))) row.ord <- order.dendrogram(dd.row) xx <- scale(mtcars)[col.ord, row.ord] xx_names <- attr(xx, "dimnames") df <- as.data.frame(xx) colnames(df) <- xx_names[[2]] df$car <- xx_names[[1]] df$car <- with(df, factor(car, levels=car, ordered=TRUE)) mdf <- melt(df, id.vars="car")

Extrae datos de dendrograma y crea las tramas

ddata_x <- dendro_data(dd.row) ddata_y <- dendro_data(dd.col) ### Set up a blank theme theme_none <- theme( panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.title.x = element_text(colour=NA), axis.title.y = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(), axis.line = element_blank() #axis.ticks.length = element_blank() ) ### Create plot components ### # Heatmap p1 <- ggplot(mdf, aes(x=variable, y=car)) + geom_tile(aes(fill=value)) + scale_fill_gradient2() # Dendrogram 1 p2 <- ggplot(segment(ddata_x)) + geom_segment(aes(x=x, y=y, xend=xend, yend=yend)) + theme_none + theme(axis.title.x=element_blank()) # Dendrogram 2 p3 <- ggplot(segment(ddata_y)) + geom_segment(aes(x=x, y=y, xend=xend, yend=yend)) + coord_flip() + theme_none

Utilice gráficos de cuadrícula y una alineación manual para colocar los tres gráficos en la página

### Draw graphic ### grid.newpage() print(p1, vp=viewport(0.8, 0.8, x=0.4, y=0.4)) print(p2, vp=viewport(0.52, 0.2, x=0.45, y=0.9)) print(p3, vp=viewport(0.2, 0.8, x=0.9, y=0.4))