Bokeh / Holoviews网络图中的Networkx节点颜色

时间:2019-10-07 02:50:33

标签: python bokeh networkx holoviews

我正在使用Networkx构建网络图,因此想在全息视图和散景中进行绘制。似乎有多种方法来注释和修改网络节点(字形圆圈),但是使用图的全息视图实例化,我无法弄清楚如何将节点属性数据传递给渲染器以基于特定属性为节点着色。

仅当我使用bokeh时它可以工作,但是在holoviews中绘制networkx图形对象不允许我传递任何类型的信息来为节点着色,而不是单色。

N = hv.Graph.from_networkx(G, nx.layout.fruchterman_reingold_layout,k=1)
                          .opts(tools=['hover','tap'],
                                node_size=20,node_color=G.node[i]['color'])


N.relabel('USCG Structural Condition Network')
N.opts(inspection_policy='edges',bgcolor='lightblue',
       show_legend=True,node_hover_fill_color='red')

我以为这将查看节点属性'color'并将其用作节点填充颜色的基础,但是我得到了一种随机颜色,例如而是耐火砖或紫色。

1 个答案:

答案 0 :(得分:0)

cmap选项丢失。 node_color参数采用您在networkx图形中定义的任何vdim

例如,

G = nx.karate_club_graph()
node_type = np.array(['type1']*17 + ['type2']*17).reshape(34)

for i, _ in enumerate(G.nodes()):
    G.nodes[i]['type'] = node_type[i]
N = hv.Graph.from_networkx(G, nx.layout.fruchterman_reingold_layout,k=1).opts(tools=['hover','tap'],
                                                                          node_size=10,
                                                                          node_color='type',
                                                                          cmap = ['blue','orange'] 

                                                                         )

给予

colored nodes graph