2011-01-18 17 views
12

tôi cần phải tạo ra một "sơ đồ cây" đồ thị -like đến nay số lượng các trường hợp cho các kịch bản khác nhau, như một trong những hình dưới đây:sơ đồ cây tạo cho thấy số trường hợp sử dụng R

Các hình ảnh được trích dẫn từ:

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

tôi có thể nhận được những con số một cách dễ dàng từ R sử dụng lệnh table, nhưng nó không phải là một cách rất tốt để trình bày nó.

Biểu đồ có thể được tạo thành mà không có bất kỳ màu sắc hay thứ gì lạ mắt, tôi chỉ muốn sử dụng định dạng để trình bày các con số. Bất kỳ đề xuất?

+3

tôi sẽ ngây thơ khuyên http://cran.r-project.org/web/packages/diagram/ Các họa tiết dường như có những gì bạn đang tìm kiếm. –

+1

Bạn cũng có thể xem xét 'plotrix :: plot.dendrite', hữu ích nếu bạn có nhiều cấp cho mỗi thể loại. – James

+0

là có một công cụ tự động tạo sơ đồ cây (phân cấp) từ dữ liệu cha-con. Đầu vào là tệp văn bản trong đó mỗi hàng reperesents một nút. Trong mỗi nút có ID nút, tên nút, ID mẹ ? – Dantes

Trả lời

9

Sơ đồ cây có thể được vẽ bằng gói "sơ đồ". Nó là một gói chung cho việc vẽ sơ đồ dòng chảy vv Xem


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

Cảm ơn Skullkey, tôi đã sử dụng gói này để tạo một biểu đồ cho việc ném tiền xu n - http://www.r-statistics.com/2011/11/diagram-for-a-bernoulli-process-using-r/ –

+2

là có một công cụ tự động tạo ra sơ đồ cây (phân cấp) từ dữ liệu cha-con. Đầu vào là tệp văn bản trong đó mỗi hàng reperesents một nút. Trong mỗi nút có ID nút, tên nút, ID mẹ ? – Dantes

5

Tôi đã có một yêu cầu tương tự cho các loại bảng xếp hạng hàng tuần. Tôi đã làm những gì skullkey gợi ý ở đây và sau đó tôi nấu chín này. Nó có lẽ không tốt bằng cái bạn thể hiện, nhưng nó có ý tưởng chính.

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

} 

Đầu ra này: 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

Các vấn đề liên quan