I have an matrix as below:
jerry peter king
jerry 1 0 0
peter 0 1 0
king 1 1 1
Now I am trying to draw a graph standing for the matrix with the code below:
t <- read.table("../data/table.dat");
adjm <- data.matrix(t);
g1 <- graph.adjacency(adjm,add.colnames=NULL);
plot(g1, main="social network", vertex.color="white", edge.color="grey", vertex.size=8,
vertex.frame.color="yellow");
The labels of the vertices is the id, so my question is how do I set the label of the vertices by the dimnames of the matrix?
I have tried to the code
vertex.label=attr(adjm,"dimnames")
but get the wrong graph.
Formally, given a graph G = (V, E), a vertex labelling is a function of V to a set of labels; a graph with such a function defined is called a vertex-labeled graph. Likewise, an edge labelling is a function of E to a set of labels.
A vertex sequence is just what the name says it is: a sequence of vertices. Vertex sequences are usually used as igraph function arguments that refer to vertices of a graph.
There are 2 ways to do this:
When you create the graph object, assign the names to a vertex attribute called label
. This is the default that plot.igraph()
looks for when plotting.
g1 <- graph.adjacency(adjm,add.colnames='label')
Use the V
iterator to extract the name
vertex attribute, which is how they are stored if you use add.colnames=NULL
.
plot(g1, main="social network", vertex.color="white", edge.color="grey", vertex.size=8, vertex.frame.color="yellow", vertex.label=V(g1)$name)
Either way will give you your desired result. Something like:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With