Thanks, indeed the layout just needed a translation to fit in the drawing, great!
I couldn't find what causes the issue and reproduce it on a smaller graph, I'm afraid...
import igraph
import pickle
(g,layout_node_layer) = pickle.load(open("graph_export.dat", mode="rb"))
layout = g.layout_sugiyama(layers=layout_node_layer, hgap=1) #Using a maxiter=10000 improved a bit the layout but not by much because of the artifacts
layout_bounding_box = layout.bounding_box()
layout.translate((-1*layout_bounding_box.left, -1*layout_bounding_box.top))
layout_bounding_box = layout.bounding_box()
print("Layout computed", layout_bounding_box)
igraph.plot(g, "test_graph.pdf", layout=layout, vertex_label=None, bbox=layout_bounding_box)
#igraph.write(g, "test_graph.dot", format="dot")
print("File created")
Thank you for all the help you gave me, and good luck if you try to solve this problem.
If you manage to, I'd be curious to know what is its cause though.