В первой части:
tkid <- tkplot(net) # tkid - идентификатор tkplot, который откроется
l <- tkplot.getcoords(tkid) # получаем координаты из tkplot
plot(net, layout=l)
netm <- get.adjacency(net, attr="weight", sparse=F)
colnames(netm) <- V(net)$media
rownames(netm) <- V(net)$media
palf <- colorRampPalette(c("gold", "dark orange"))
heatmap(netm[,17:1], Rowv = NA, Colv = NA, col = palf(100),
scale="none", margins=c(10,10) )
dd <- degree.distribution(net, cumulative=T, mode="all")
plot(dd, pch=19, cex=1, col="orange", xlab="Degree", ylab="Cumulative Frequency")
graph.incidence
. В igraph двудольные сети имеют параметр ребра type
, равный 0 для одной группы вершин и 1 для другой.head(nodes2)
head(links2)
net2 <- graph.incidence(links2)
table(E(net2)$type)
plot(net2, vertex.label=NA)
V(net2)$color <- c("steel blue", "orange")[V(net2)$type+1]
V(net2)$shape <- c("square", "circle")[V(net2)$type+1]
V(net2)$label <- ""
V(net2)$label[V(net2)$type==F] <- nodes2$media[V(net2)$type==F]
V(net2)$label.cex=.4
V(net2)$label.font=2
plot(net2, vertex.label.color="white", vertex.size=(2-V(net2)$type)*8)
plot(net2, vertex.label=NA, vertex.size=7, layout=layout.bipartite)
plot(net2, vertex.shape="none", vertex.label=nodes2$media,
vertex.label.color=V(net2)$color, vertex.label.font=2,
vertex.label.cex=.6, edge.color="gray70", edge.width=2)
png
(если она не установлена, воспользуйтесь install.packages("png")
).# install.packages("png")
library(png)
img.1 <- readPNG("./images/news.png")
img.2 <- readPNG("./images/user.png")
V(net2)$raster <- list(img.1, img.2)[V(net2)$type+1]
plot(net2, vertex.shape="raster", vertex.label=NA,
vertex.size=16, vertex.size2=16, edge.width=2)
l <- layout.auto(net2, ymin=-1.5, ymax=1.5, xmin=-1.5, xmax=1.5)
plot(net2, vertex.shape="raster", vertex.label=NA,
vertex.size=16, vertex.size2=16, edge.width=2, layout=l)
img.3 <- readPNG("./images/puppy.png")
rasterImage(img.3, xleft=-1.7, xright=0, ybottom=-1.2, ytop=0)
# Числа после картинки - ее координаты
# Границы построения заданы в par()$usr
igraph
и statnet
порождают ошибки, если их загрузить вместе.detach(package:png)
detach(package:igraph)
network
очень похоже на igraph
, хотя синтаксис и отличается немного (полный набор новых названий параметров!). Этот пакет также использует меньше настроек по умолчанию, полученных изменением объекта-сети, и более явные параметры в функции построения.network
, который используется семейством пакетов Statnet (в том числе network
, sna
, ergm
, stergm
и других).?edgeset.constructors
. Как и в примере с igraph, будем использовать список ребер и блоки данных с атрибутами вершин, чтобы создать объект-сеть. Одна особенность, на которую стоит обратить внимание — параметр ignore.eval
. По умолчанию он установлен в TRUE
, и эта настройка указывает объекту-сети игнорировать веса ребер.library(network)
net3 <- network(links, vertex.attr=nodes, matrix.type="edgelist",
loops=F, multiple=F, ignore.eval = F)
net3[,]
net3 %n% "net.name" <- "Media Network" # параметр сети
net3 %v% "media" # параметр вершины
net3 %e% "type" # параметр вершины
net3 %v% "col" <- c("gray70", "tomato", "gold")[net3 %v% "media.type"]
plot(net3, vertex.cex=(net3 %v% "audience.size")/7, vertex.col="col")
coord
.l <- plot(net3, vertex.cex=(net3 %v% "audience.size")/7, vertex.col="col")
plot(net3, vertex.cex=(net3 %v% "audience.size")/7, vertex.col="col", coord=l)
detach(package:network)
network
, выполните ?plot.network
.
К сожалению, не доступен сервер mySQL