2014-09-01 45 views
5

HiveR ile denemeler yaptım ve başarıyla çalıştığım veri kümelerinden birini temsil eden bir kovanı oluşturdum. Ancak sorunuKırpma Hive plot

enter image description here

: Ancak, bir kovan arsa verilerinin çok daha basit ve sezgisel bir görünüm verir

enter image description here

: verilerinin özgün grafik klasik bir tüy yumağı olduğunu çizim, sadece tuvalin nispeten küçük bir bölümünü kaplar. Çizgiyi çoğaltmak için çeşitli püf noktaları denedim, böylece arsa çerçevenin çoğunu kapladı, ancak hiçbiri başarılı olmadı. En umut verici seçenekler, pdf veya eps dosyasına çizim yapmak ve daha sonra beyaz alanı kesmek için pdfcrop veya epstool kullanmaktı, ancak bunların hiçbiri pratikte işe yaramadı. Çizginin sınırlayıcı kutuyu şişiren görünmez elemanlara sahip olduğundan şüpheleniyorum.

Bu planın nasıl etkili bir şekilde kırpılabileceği konusunda herhangi bir fikri var mı? [Bunu el ile yapabildiğimi biliyorum, fakat bu grafikleri bir dizi üretmek zorundayım ve bunu yapmak için sistematik/programatik bir yol arıyorum.]

Kovanı için veri yapısı bulunabilir. here.

Çok teşekkürler, Andrew. Ne yapacağını kullanım pdfcrop

set.seed(3) 

VERTICES <- 512 

library(igraph) 

big.graph <- barabasi.game(VERTICES, power = 1, 
          out.seq = sort(sample(c(1, 2, 3, 4), VERTICES, replace = TRUE, 
               prob = c(0.1, 0.7, 0.1, 0.1))), 
          directed = FALSE, out.pref = TRUE) 
library(HiveR) 
library(digest) 

V(big.graph)$name <- sapply(1:VERTICES, function(n) {digest(n, algo = "crc32", serialize = TRUE)}) 

big.matrix <- get.adjacency(big.graph, type= "lower", attr=NULL, names=TRUE, sparse=FALSE) 

colnames(big.matrix) <- V(big.graph)$name 
rownames(big.matrix) <- colnames(big.matrix) 

hive <- adj2HPD(big.matrix, axis.cols = "black") 
hive <- mineHPD(hive, option = "rad <- tot.edge.count") 
hive <- mineHPD(hive, option = "axis <- source.man.sink") 

summary = sumHPD(hive, chk.all = TRUE, plot.list = TRUE) 
# 
occluding = subset(summary, n1.ax == n2.ax & n1.rad == n2.rad) 
occluding = unique(c(as.character(occluding$n1.lab), as.character(occluding$n2.lab))) 
# 
hive$nodes$radius = ifelse(hive$nodes$lab %in% occluding, jitter(hive$nodes$radius), hive$nodes$radius) 

library(grid) 

plotHive(hive, bkgnd = "white") 
+1

Ayrıca bu grafiği oluşturmak için kodunuzu da gönderebilir misiniz? – Andrie

+0

İyi plan. Bitti. – DataWookie

cevap

0

: İşte

arsa oluşturmak için kodudur.

knitr, sizin için çok güzel çalışacak mükemmel bir işlev plot_crop'a sahiptir.

pdfcrop/ImageMagick'i yüklemeniz gerekebilir, ancak bu, bu grafikleri programsal olarak üretmenize ve boşlukları kaldırmanıza olanak tanır.

pdf("graph.pdf") 
plotHive(hive, bkgnd = "white") 
dev.off() 

library(knitr) 
plot_crop("graph.pdf")