2014-09-01 6 views
5

मैं हाइवआर के साथ प्रयोग कर रहा हूं और सफलतापूर्वक एक हाइव प्लॉट बनाया है जो डेटा सेट में से एक का प्रतिनिधित्व करता है जिसके साथ मैं काम कर रहा हूं। समस्याफसल हाइव प्लॉट

enter image description here

हालांकि,:

enter image description here

हालांकि, एक छत्ता साजिश डेटा का एक बहुत सरल और अधिक सहज ज्ञान युक्त दृश्य देता है: डेटा के लिए मूल ग्राफ एक क्लासिक hairball है यह है कि साजिश केवल कैनवास के अपेक्षाकृत छोटे हिस्से पर है। मैंने इसे फसल करने के लिए विभिन्न युक्तियों की कोशिश की है ताकि साजिश अधिकांश फ्रेम पर कब्जा कर सके, लेकिन उनमें से कोई भी सफल नहीं हुआ है। सबसे आशाजनक विकल्प प्लॉट को पीडीएफ या ईपीएस फ़ाइल में लिखना था और फिर सफेद स्पेस को ट्रिम करने के लिए पीडीएफक्रॉप या एपस्टूल का उपयोग करना था, लेकिन उनमें से कोई भी अभ्यास में काम नहीं करता था। मुझे संदेह है कि साजिश में कुछ अदृश्य तत्व हैं जो बाध्यकारी बॉक्स को बढ़ा रहे हैं।

क्या किसी के पास कोई विचार है कि इस प्लॉट को प्रभावी तरीके से कैसे फेंक दिया जा सकता है? [मुझे पता है कि मैं इसे मैन्युअल रूप से कर सकता हूं, लेकिन मुझे इन प्लॉट्स का उत्पादन करना होगा और मैं इसे करने के लिए एक व्यवस्थित/प्रोग्रामेटिक तरीका ढूंढ रहा हूं।]

हाइव प्लॉट के लिए डेटा संरचना पाई जा सकती है here

बहुत धन्यवाद, एंड्रयू।

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

क्या आप इस प्लॉट को बनाने के लिए अपना कोड भी पोस्ट कर सकते हैं? – Andrie

+0

अच्छी योजना। किया हुआ। – DataWookie

उत्तर

0

मुझे क्या होगा उपयोग pdfcrop है:

यहाँ साजिश बनाने के लिए कोड है।

knitr में एक उत्कृष्ट फ़ंक्शन plot_crop है जो आपके लिए बहुत अच्छी तरह से काम करेगा।

आपको पीडीएफक्रॉप/छवि मैगिक स्थापित करने की आवश्यकता हो सकती है, लेकिन यह आपको प्रोग्रामिंग रूप से इन भूखंडों का उत्पादन करने और व्हाइटस्पेस को हटाने देगा।

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

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