我正在尝试将我在python中的锦标赛有向图可视化为networkx对象。理想情况下,如果我可以想象它类似于经典的NCAA“March Madness”支架,那将是很棒的。到目前为止,我最接近的是使用点布局,但它不是很直观,看起来不像支架。
我有一个单独的图表,但是可以将它分成4个子图(设置march madness的方式),如果这样可以更好地进行可视化。
以下是我正在寻找的布局示例(或附近的布局) NCAA "March Madness" bracket http://shorebranding.com/wp-content/uploads/2013/03/brackets.jpg
这是我到目前为止所得到的,它需要改进,但你会发现它是图表的不良表示。
这里有一些我正在使用的代码来构建&将图形输出到图像:
def buildTourneyGraph(games,analysisYear):
MG=nx.DiGraph()
#for idx, gm in enumerate(games): # Iterate through rows
for gm in games: # Iterate through rows
#pp.pprint(gm)
if gm["academicYear".upper()] == int(analysisYear):
#add the two team nodes
MG.add_node(gm["winner".upper()])
MG.add_node(gm["loser".upper()])
MG.add_edge(gm["loser".upper()], gm["winner".upper()], weight=gm["margin".upper()] , round=gm["round".upper()])
#Draw a graph and save it to a PNG file
#nx.draw_spectral(MG)
#nx.draw_graphviz(MG)
#nx.draw_shell(MG)
# same layout using matplotlib with labels
plt.title("NCAA Tourney for " + str(analysisYear))
pos=nx.graphviz_layout(MG,prog='dot')
nx.draw(MG,pos,with_labels=True,arrows=True,node_size=20,node_color="red")
outputGraphFile = os.path.expanduser('C:/Users/myUser/Documents/graph_tourney_' + str(analysisYear) + '.png')
plt.savefig(outputGraphFile)