I made a small csv called mycsv.csv that has the following:
,a,b,c,d
a,0,1,0,1
b,1,0,1,0
c,0,1,0,1
d,1,0,1,0
You don’t have a ‘,’ as the first character on the first row, but instead you have a space, so if this is an error on my part let me know. The general idea will be the same. Read in the csv as such:
from numpy import genfromtxt
import numpy as np
mydata = genfromtxt('mycsv.csv', delimiter=",")
print(mydata)
print(type(mydata))
This prints:
[[ nan nan nan nan nan]
[ nan 0. 1. 0. 1.]
[ nan 1. 0. 1. 0.]
[ nan 0. 1. 0. 1.]
[ nan 1. 0. 1. 0.]]
<type 'numpy.ndarray'>
Now that we have the csv read in as a numpy array we need to extract just the adjacency matrix:
adjacency = mydata[1:,1:]
print(adjacency)
This prints:
[[ 0. 1. 0. 1.]
[ 1. 0. 1. 0.]
[ 0. 1. 0. 1.]
[ 1. 0. 1. 0.]]
You can just slice your numpy array as needed if my small example isn’t exactly as yours.
To plot the graph you will need to import matplotlib and networkx:
import matplotlib.pyplot as plt
import networkx as nx
def show_graph_with_labels(adjacency_matrix, mylabels):
rows, cols = np.where(adjacency_matrix == 1)
edges = zip(rows.tolist(), cols.tolist())
gr = nx.Graph()
gr.add_edges_from(edges)
nx.draw(gr, node_size=500, labels=mylabels, with_labels=True)
plt.show()
show_graph_with_labels(adjacency, make_label_dict(get_labels('mycsv.csv')))
Here’s a short tutorial on graphs with python.