いくつかのライブラリがあり、そのうちの少なくとも1つはMatplotlibに依存しており、必要な処理を実行します。Networkx(www.networkx.lanl.gov)を使用してグラフ構造を構築し、それを使用して関連するMatplotlibメソッドを呼び出してプロットすることをお勧めします。NetworkxとMatplotlibは非常にうまく連携します。
import networkx as NX
import matplotlib.pyplot as PLT
Gh = NX.Graph()
Gh.add_edge("You", "Bike", weight=1.0)
Gh.add_edge("Bike", "Apple", weight=0.9)
Gh.add_edge("Me", "Bike", weight=1.1)
all_nodes = Gh.nodes()
# to scale node size with degree:
scaled_node_size = lambda(node) : NX.degree(Gh, node) * 700
position = NX.spring_layout(Gh) # just choose a layout scheme
NX.draw_networkx_nodes(Gh, position, node_size=map(scaled_node_size, all_nodes))
NX.draw_network_edges(Gh, position, Gh.edges(), width=1.0, alpha=1.0, edge_color="red")
# now for the Matplotlib part:
PLT.axis("off")
PLT.show()
ご覧のとおり、ノードスケーリングの場合と同じように、係数を適用して「重み」パラメータを「エッジ」メソッドのいずれかに変更することで、エッジをスケーリングできます。
また、pygraphvizをお勧めします(明らかに、バックエンドとしてgraphvizを使用しています)。これは、Netwworkx(同じリード開発者)と非常によく似ています。