NetworkX - 如何更改节点的形状?

13

我知道我们可以从so^>v<dph8中选择形状。

有没有一种方法可以修改节点的形状,使其包含节点的名称?

我对自定义形状(或者可以根据其包含的文本自适应大小的形状)很感兴趣。


1
为什么这个超链接名称这么奇怪? - d33tah
1
这是我们可以给node_shape的选项:s代表“正方形”,o代表“圆形”,... - DavidK
问题是“如何改变形状”,不是关于“调整大小”。这是关于自定义形状的。我已经在我的问题中给出了“so^>v<dph8”,以显示我已经知道我们可以从该列表中进行选择。目前的答案不是我预期的。 - DavidK
@DavidK:你修改了问题,使其比最初提出的要求更为狭窄,这无效化了已经得到的回答。这对那些撰写答案的人是不公平的。如果你需要缩小你的要求,请用新的要求提出一个新问题。 - Matt
@Matt 答案不是我想要的。改变大小是显而易见的答案,但这不是我想要的,我已经表达得很清楚了。目标是得到最好的问题答案,而这个答案不是最佳选择。 - DavidK
显示剩余4条评论
2个回答

18

我建议在标签周围放置一个bbox而不是改变节点的形状。在这种情况下,节点将在框内“包含名称”,为此需要将bbox参数指定为字典。

nx.draw(G, pos=pos, with_labels=True,  node_shape="s",  node_color="none", bbox=dict(facecolor="skyblue", edgecolor='black', boxstyle='round,pad=0.2'))

您也可以考虑这个解决方案在这里


8
您可以使用以下代码绘制节点及其标签:
nx.draw_networkx_nodes(G, pos, node_size=600, node_color='w', alpha=0.4, node_shape='d')
nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif')

要查看完整示例,您可以查看networkx图库的代码这里

编辑:为了适应节点内的名称,您需要调整节点大小和字体大小。

证明:

example


谢谢,但是名称在节点形状之外,有没有办法使它在内部? - DavidK
更改节点大小和字体大小。 - Kirell
可以为节点指定宽度和高度吗?(在正方形的情况下) - DavidK
这是一个正方形而不是长方形。如果您想绘制自定义形状,建议查看 networkx 的源代码,它只是调用 matplotlib 函数。更改形状应该很简单。 - Kirell
我同意,节点的形状和颜色应该是内部属性。这样,在绘制时就不会混淆了。 - Soren
3
可以为每个节点指定形状吗? - BND

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接