Y position is misaligned when rendering with matplotlib
Bug report
When rendering to a matplotlib figure, the graph-tool plot is slightly misaligned on the y-axis. This can be observed by altering the y limit in matplotlib.
Example
import matplotlib.pyplot as plt
import graph_tool.all as gt
g = gt.price_network(500)
pos = gt.sfdp_layout(g)
plt.switch_backend('cairo')
fig, ax = plt.subplots()
ax.set_aspect(1)
res = gt.graph_draw(g, pos=pos, mplfig=ax)
ylim = ax.get_ylim()
xlim = ax.get_ylim()
ax.set_ylim(ylim[0]/2, ylim[1]/2)
ax.set_xlim(xlim[0]/2, ylim[1]/2)
plt.savefig('gt_test.pdf')
gt_test.pdf
Result:These warnings are produced:
/usr/lib/python3.8/site-packages/graph_tool/draw/cairo_draw.py:637: UserWarning: Unknown parameter: layout_K
warnings.warn("Unknown parameter: " + k, UserWarning)
/usr/lib/python3.8/site-packages/graph_tool/draw/cairo_draw.py:637: UserWarning: Unknown parameter: update_layout
warnings.warn("Unknown parameter: " + k, UserWarning)
You will notice that the nodes and edges are visible slightly above the top, and are clipped too soon on the bottom. Despite modifying x limits in the same way the clipping works correctly there. I've tried plotting other things with ax.plot()
and ax.scatter()
and those things will be clipped correctly, so this seems graph-tool specific.
I also noticed making this demo that the arrow heads are not hidden outside the matplotlib axes, but I guess that's probably a separate issue.
Platform information
-
Are you running the latest graph-tool
version? -
Do you observe the problem with the current git version? -
Did you compile graph-tool
manually?
(Compiled using the PKGBUILDs available on the Arch User Repository. I should note also that I had to use this patch to fix the boost coroutine header included with Arch before it would compile.)
- OS: Arch Linux
- Python: 3.8 (installed from arch repos)
- Matplotlib: 3.1.3 (installed from arch repos)
- Boost libs: 1.72 (installed from arch repos)
- Compiler: GCC 9.2.0
Behaviour seems identical between latest release and git version.