【问题标题】:NetworkX - How to change the shape of the node?NetworkX - 如何更改节点的形状?
【发布时间】:2015-05-20 08:45:17
【问题描述】:

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

有没有办法修改节点的形状,使其包含节点的名称?

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

【问题讨论】:

  • 为什么会有奇怪的超链接名称?
  • 这是我们可以给 node_shape 的:s 代表“方形”,o 代表“圆形”,...
  • @DavidK:请不要编辑您的问题以提出不同的问题。而是提出一个新问题。
  • @Matt,我没有问什么不同的问题,我已经知道答案了。我的问题是如何制作自定义形状。 (或者如何做一个包含文本但不重叠的形状)
  • 问题是“如何改变形状”。这与“调整大小”无关。这是关于自定义形状。我已经在我的问题中给出了“so^>v

标签: python networkx shapes


【解决方案1】:

我可以建议在标签周围放置一个 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'))

你也可以考虑这个解决方案here

【讨论】:

    【解决方案2】:

    您可以使用以下代码绘制节点及其标签:

    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画廊here的代码。

    编辑:要使名称适合节点内部,您必须使用节点大小和字体大小。

    证明:

    【讨论】:

    • 谢谢,但是名字在节点形状之外,有没有办法把它放在里面?
    • 更改节点大小和字体大小。
    • 是否可以指定节点的宽度和高度? (如果是正方形)
    • 它是正方形而不是矩形。如果您想绘制自定义形状,我建议查看 networkx 的源代码,它只是调用 matplotlib 函数。改变形状应该很简单。
    • 是否可以为每个节点指定一个形状?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多