BokehHoloviews网络图中的Networkx节点颜色。

问题描述 投票:0回答:1

我正在使用Networkx构建一个网络图,并希望随后用holoviews和bokeh绘制。 似乎有多种方法来注释和修改网络节点(字形圈),但使用holoviews实例化的图形,我无法找出如何将节点属性数据传递给渲染器,使其根据特定属性给节点着色。

当我只使用虚化时,它可以工作,但在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')

我以为这样可以查看节点属性 "颜色",并将其作为节点填充颜色的基础,但我得到的却是一个随机的颜色,例如火砖或紫色。

python bokeh networkx holoviews
1个回答
0
投票

cmap 选项缺失。node_color 参数中的"...... "参数取"......"。vdim 您在networkx图中定义的。

例如:

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'] 

                                                                         )

给予

彩色节点图

© www.soinside.com 2019 - 2024. All rights reserved.