我正在使用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')
我以为这样可以查看节点属性 "颜色",并将其作为节点填充颜色的基础,但我得到的却是一个随机的颜色,例如火砖或紫色。
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']
)
给予