I am using igraph to color vertices
I have two CSV files answers and topology of the graph.
Answers: (this tells that players K and N answered correctly)
Player Q1_I1
1 k 1
2 l 0
3 n 1
4 m 0
Topology: (representation of who is connected to whom)
Node.1 Node.2
1 k l
2 l k
3 l m
4 m l
5 l n
6 n l
7 n k
8 k n
I wanted to build a graph using package IGraph and to color vertices in different colors depending of their correctness.
This is what I was able to achieve:
# reads answers and creates a graph from topology
answers <- read.csv("answers2.csv",header=T)
data<-read.csv('edges2.csv')
data<-graph.data.frame(data1, directed=FALSE)
g<-simplify(data)
# goes through vertices and colors them in different color, depending on correctness.
# 2 means second column (First one is the players name)
V(g)$color <- ifelse(answers[V(g), 2] == 1, "blue", "red")
plot(g, layout=layout.fruchterman.reingold, vertex.color=V(g)$color)
The problem is that in my output the colors are wrong:
Here M and K are marked as correct, whereas it should be N and K. I think that the problem is because I am not specifying that Node should be related to Player, and I tried to achieve this, but with no success.
Are there any ideas how to achieve this?
The easiest is to create the graph with all meta data included and then igraph takes care of the rest. E.g.
library(igraph)
answers <- read.table(textConnection(
" Player Q1_I1
1 k 1
2 l 0
3 n 1
4 m 0
"))
topology <- read.table(textConnection(
" Node.1 Node.2
1 k l
2 l k
3 l m
4 m l
5 l n
6 n l
7 n k
8 k n
"))
g2 <- graph.data.frame(topology, vertices=answers, directed=FALSE)
g <- simplify(g2)
V(g)$color <- ifelse(V(g)$Q1_I1 == 1, "lightblue", "orange")
plot(g)
But, actually if you don't include each edge in both directions in your data table, then you don't even need to call simplify.