我正在使用deap符号回归示例中的代码,图形显示得很好,但我希望节点作为圆角矩形展开,以适应文本automatically.(我不想通过尝试和错误来指定节点大小)。我该怎么做?
# show tree
import matplotlib.pyplot as plt
import networkx
nodes, edges, labels = gp.graph(bests[0])
graph = networkx.Graph()
graph.add_nodes_from(nodes)
graph.add_edges_from(edges)
pos = networkx.graphviz_layout(graph, prog="dot")
plt.figure(figsize=(7,7))
networkx.draw_networkx_nodes(graph, pos, node_size=900, node_color="w")
networkx.draw_networkx_edges(graph, pos)
networkx.draw_networkx_labels(graph, pos, labels)
plt.axis("off")
plt.show()发布于 2015-09-05 23:50:23
参数node_size同时接受标量值和向量值。虽然标量使所有节点大小相等,但向量可以帮助您在列表中为每个节点指定单独的值。如果节点ids是字符串,那么下面的策略工作得很好。
只需根据每个节点id的长度将size参数更改为networkx.draw_networkx_nodes中的列表即可。适当选择the_base_size。
networkx.draw_networkx_nodes(graph, pos,
node_size=[len(v) * the_base_size for v in graph.nodes()],
node_color="w")您也可以根据处理标签的情况对此进行调整。
*然而,我不确定当它根据标签大小从列表中选择节点大小时,是否会保留一对一的通信。分享你的成果。我亲自将它用于字符串节点it,并且运行良好。
https://stackoverflow.com/questions/27878794
复制相似问题