Reputation: 957
The following code results in an error unpacking the shape of my matrix in figaspect
, but the shape seems to be correct (a 4 by 4 2D array). Am I doing something dumb?
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge(1, 2)
g.add_edge(2, 3)
g.add_edge(3, 4)
matrix = nx.to_scipy_sparse_matrix(g)
print(matrix.shape)
plt.matshow(matrix)
plt.show()
errors with:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-118-70cfbe8cdb62> in <module>
7 matrix = nx.to_scipy_sparse_matrix(g)
8 print(matrix.shape)
----> 9 plt.matshow(matrix)
10 plt.show()
/usr/local/lib/python3.7/site-packages/matplotlib/pyplot.py in matshow(A, fignum, **kwargs)
2180 # Extract actual aspect ratio of array and make appropriately sized
2181 # figure.
-> 2182 fig = figure(fignum, figsize=figaspect(A))
2183 ax = fig.add_axes([0.15, 0.09, 0.775, 0.775])
2184 im = ax.matshow(A, **kwargs)
/usr/local/lib/python3.7/site-packages/matplotlib/figure.py in figaspect(arg)
2740 # Extract the aspect ratio of the array
2741 if isarray:
-> 2742 nr, nc = arg.shape[:2]
2743 arr_ratio = nr / nc
2744 else:
ValueError: not enough values to unpack (expected 2, got 0)
but the printed shape is (4, 4)
Upvotes: 0
Views: 262
Reputation: 153550
Try using todense
:
plt.matshow(matrix.todense())
Where,
print(matrix)
Outputs:
(0, 1) 1
(1, 0) 1
(1, 2) 1
(2, 1) 1
(2, 3) 1
(3, 2) 1
And,
print(matrix.todense())
Outputs:
[[0 1 0 0]
[1 0 1 0]
[0 1 0 1]
[0 0 1 0]]
Plottting:
Upvotes: 1