Ho sperimentato con HiveR e creato con successo una trama hive che rappresenta uno dei set di dati con cui lavoro. Il grafico originale per i dati è una palla di pelo classico:Ritaglio diagramma Hive
Tuttavia, una trama alveare dà una visione molto più semplice e più intuitiva dei dati:
Tuttavia, il problema è che la trama occupa solo una porzione relativamente piccola della tela. Ho provato vari trucchi per ridurlo in modo che la trama occupi la maggior parte del fotogramma, ma nessuno di essi ha avuto successo. Le opzioni più promettenti erano scrivere la trama in un file pdf o eps e poi usare pdfcrop o epstool per tagliare lo spazio bianco, ma nessuno dei due ha funzionato nella pratica. Sospetto che la trama abbia degli elementi invisibili che stanno gonfiando il riquadro di delimitazione.
Qualcuno ha qualche idea su come questa trama può essere ritagliata efficacemente? [So che potrei farlo manualmente, ma dovrò produrre un certo numero di questi grafici e sto cercando un modo sistematico/programmatico per farlo.]
La struttura dati per la trama dell'alveare può essere trovata here.
Molte grazie, Andrew.
ecco il codice per creare la trama:
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")
Puoi pubblicare anche il tuo codice per creare questo grafico? – Andrie
Buon piano. Fatto. – DataWookie