2015-04-14 1 views
1

En python igraph traçant avec cairo PDF, arêtes incurvées définies par edge_curved = X ou autocurve = True, les bords sont invisibles dans la sortie PDF. Le même est synonyme de PNG. Les pointes de flèches et tous les autres éléments graphiques sont visibles. Régler les bords droits, ils deviennent visibles. Voici un exemple minimal:Pourquoi les arêtes incurvées sont-elles invisibles dans le tracé igraph?

import igraph 
g = igraph.Graph.Erdos_Renyi(n = 23, m = 123) 
igraph.plot(g, autocurve = True, edge_width = 0.02) 

Répondre

1

Avec une largeur de bord inférieure à 0,051, les bords incurvés sont toujours invisibles. En fait, toutes les largeurs de bords> = 0,051 et < 1,0 semblent les mêmes sur PDF, probablement les nombres inférieurs à 1,0 sont arrondis, et < = 0,05 arrondi à 0,0. Sur les parcelles PNG, il existe une nette différence dans cette gamme de largeurs de bord. Donc, la solution est d'utiliser au moins edge_width = 0.051 si vous tracez des arêtes courbes. Ce qui est intéressant, c'est que les bords droits restent visibles sous la largeur du bord 0,051, mais ils ne paraissent pas plus fins, la largeur semble arrondie à probablement 1,0. Comme on peut le voir dans le code source de python igraph, edge.width est passé directement au cairo.Context.set_line_width(). J'ai vu ce dernier à de nombreux endroits utilisés avec des flotteurs inférieurs à 1,0, probablement le résultat dépend de la surface réelle du cairo.