GraphArtist fails
The following code fails with the error below.
import matplotlib as mpl
mpl.use('cairo')
import graph_tool.all as gt
import matplotlib.pyplot as plt
import numpy as np
import cairo
width = 640
height = 480
fig = plt.figure()
g = gt.collection.data["celegansneural"]
state = gt.minimize_nested_blockmodel_dl(g, deg_corr=True)
renderer = mpl.backends.backend_cairo.RendererCairo(fig.dpi)
renderer.set_width_height(width, height)
data = np.zeros((width, height, 4), dtype=np.uint8)
surface = cairo.ImageSurface.create_for_data(
data, cairo.FORMAT_ARGB32, width, height)
renderer.set_ctx_from_surface(surface)
gt.draw_hierarchy(state, mplfig=fig)
fig.draw(renderer)
Traceback (most recent call last):
File "graph-tool-bug.py", line 26, in <module>
fig.draw(renderer)
File "/Users/rafa/Library/Python/3.6/lib/python/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/Users/rafa/Library/Python/3.6/lib/python/site-packages/matplotlib/figure.py", line 1475, in draw
renderer, self, artists, self.suppressComposite)
File "/Users/rafa/Library/Python/3.6/lib/python/site-packages/matplotlib/image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "/Users/rafa/Library/Python/3.6/lib/python/site-packages/matplotlib/artist.py", line 55, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/Users/rafa/Library/Python/3.6/lib/python/site-packages/matplotlib/axes/_base.py", line 2607, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/Users/rafa/Library/Python/3.6/lib/python/site-packages/matplotlib/image.py", line 141, in _draw_list_compositing_images
a.draw(renderer)
File "/usr/local/lib/python3.6/site-packages/graph_tool/draw/cairo_draw.py", line 1570, in draw
self.vorder, self.eorder, self.nodesfirst, self.kwargs)
File "/usr/local/lib/python3.6/site-packages/graph_tool/draw/cairo_draw.py", line 690, in cairo_draw
vattrs, vdefaults = _attrs(vprops, "v", g, vcmap)
File "/usr/local/lib/python3.6/site-packages/graph_tool/draw/cairo_draw.py", line 484, in _attrs
nattrs[int(attr)] = _prop(d, g, _convert(attr, v, cmap))
File "/usr/local/lib/python3.6/site-packages/graph_tool/draw/cairo_draw.py", line 323, in _convert
cmap, alpha = cmap
ValueError: too many values to unpack (expected 2)
I was able to determine that the error is caused by a call in cairo_draw.py
, line 1564:
cairo_draw(self.g, pos, ctx, self.vprops, self.eprops,
self.vorder, self.eorder, self.nodesfirst, self.kwargs)
Changing it to the following solves the problem:
cairo_draw(self.g, pos, ctx, self.vprops, self.eprops,
self.vorder, self.eorder, self.nodesfirst, **self.kwargs)