2011-01-18 12 views
12

Necesito crear un "diagrama de árbol" gráfico -como para presentar el número de casos para diferentes escenarios, como el que se muestra a continuación:diagrama de árbol para crear muestra el recuento de caso utilizando R

El la imagen es la cita de:

Pediatrics. 2005 Dec;116(6):1317-22. 
Electronic surveillance system for monitoring surgical antimicrobial prophylaxis. 
Voit SB, Todd JK, Nelson B, Nyquist AC. 

puedo obtener los números fácilmente de R utilizando el comando table, pero no es una muy buena manera de presentarlo.

La tabla se puede hacer sin colores sofisticados ni nada, solo quiero usar el formato para presentar los números. ¿Alguna sugerencia?

+3

Voy a recomendar ingenuamente http://cran.r-project.org/web/packages/diagram/ La viñeta parece tener Que estas buscando. –

+1

También podría considerar 'plotrix :: plot.dendrite', útil si tiene muchos niveles por categoría. – James

+0

hay una herramienta que genera automáticamente un diagrama de árbol (jerarquía) a partir de datos padre-hijo. entrada es un archivo de texto donde cada fila representa un nodo. En cada nodo, hay ID de nodo, nombre de nodo, ID principal ? – Dantes

Respuesta

9

El diagrama de árbol se puede dibujar usando el paquete "diagrama". Es un paquete genérico para dibujar diagramas de flujo, etc. Consulte


library(diagram) 
demo("flowchart") 
+1

Gracias Skullkey, he usado este paquete para crear un diagrama para arrojar n monedas - http://www.r-statistics.com/2011/11/diagram-for-a-bernoulli-process-using-r/ –

+2

es existe una herramienta que genera automáticamente un diagrama de árbol (jerarquía) a partir de datos padre-hijo. entrada es un archivo de texto donde cada fila representa un nodo. En cada nodo, hay ID de nodo, nombre de nodo, ID principal ? – Dantes

5

Recibí una solicitud similar para este tipo de gráficos cada semana. Hice lo que dice skullkey aquí y luego cociné esto. Probablemente no sea tan bueno como el que muestra, pero tiene la idea principal.

consort.dia <- function(
screened=45, 
eligible=46, 
neligible=47, 
interested=48, 
ninterested=49, 
consented=50, 
nconsented=51, 
treat=52, 
control=53 
){ 
require(diagram) 

openplotmat(main="Consort Diagram") 

elpos<-coordinates (c(1,3,3,4,5)) 

fromto <- matrix(ncol=2,byrow=TRUE, 
       data=c(1,2, 
         1,3, 
         1,4, 
         2,5, 
         2,6, 
         2,7, 
         5,8, 
         5,9, 
         5,10, 
         8,12, 
         8,13 
        ) 
      ) 

nr  <-nrow(fromto) 

arrpos <- matrix(ncol=2,nrow=nr) 

for (i in 1:nr) 
    arrpos[i,] <- straightarrow ( 
         to=elpos[fromto[i,2],], 
         from=elpos[fromto[i,1],], 
         lwd=2,arr.pos=0.6, 
         arr.length=0.5 
         ) 

textrect (elpos[1,],radx=.094,rady=.05,lab=paste("Screened\n",screened)) 

textrect (elpos[2,],radx=.094,rady=.05,lab=paste("Eligible\n",eligible)) 

textrect (elpos[3,],radx=.094,rady=.05,lab=paste("Not Eligible\n",neligible)) 

textrect (elpos[4,],radx=.094,rady=.05,lab=paste("Screening \n Incomplete\n",screened-(neligible+eligible))) 

textrect (elpos[5,],radx=.094,rady=.05,lab=paste("Interested\n",interested)) 

textrect (elpos[6,],radx=.094,rady=.05,lab=paste("Not Interested\n",ninterested)) 

textrect (elpos[8,],radx=.094,rady=.05,lab=paste("Consented\n",consented)) 

textrect (elpos[9,],radx=.094,rady=.05,lab=paste("Not Consented\n",nconsented)) 

textrect (elpos[12,],radx=.094,rady=.05,lab=paste("Treatment\n",treat)) 

textrect (elpos[13,],radx=.094,rady=.05,lab=paste("Control\n",control)) 

textrect (elpos[7,],radx=.094,rady=.05,lab=paste("Unable to \nReach\n",eligible-{interested+ninterested})) 

textrect (elpos[10,],radx=.094,rady=.05,lab=paste("In Progress\n",interested-{consented+nconsented})) 

} 

Muestra esto: enter image description here

7
library(diagram) 
par(mfrow=c(1,1)) 
par(mar=c(0,0,0,0)) 
##initialize new grphics device 
openplotmat() 
##number of elements per row 
elpos<-coordinates (c(1,1, 2, 2, 2, 3,2)) 
##draw arrows from each row to next row 
treearrow(from=elpos[1,],to=elpos[2,],lwd=6) 
treearrow(from=elpos[2,],to=elpos[3:4,],lwd=6) 
treearrow(from=elpos[3,],to=elpos[5,],lwd=6) 
treearrow(from=elpos[4,],to=elpos[6,],lwd=6) 

treearrow(from=elpos[5,],to=elpos[7:8,],lwd=6) 

treearrow(from=elpos[7,],to=elpos[9:10,],lwd=6) 
treearrow(from=elpos[8,],to=elpos[11,],lwd=6) 

treearrow(from=elpos[9,],to=elpos[12,],lwd=6) 
treearrow(from=elpos[10,],to=elpos[13,],lwd=6) 

##create a generic 3-lined label for each textbox 
labels = vector(length=13) 
for(i in 1:13) { 
labels[i] = paste(c(sample(letters, 3), "\n", sample(letters, 3) , "\n", sample(letters, 3)), collapse="") 
} 
labels[12] = "Consistent with AAP\nguidelines" 

##plot text boxes 
for (i in 1:13) textround (elpos[i,],radx=0.08,rady=0.05,lab=labels[i]) 

enter image description here

Cuestiones relacionadas