You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改用Holoviews/Bokeh绘制的NetworkX图的节点颜色?

修改Holoviews Graph单个节点颜色的方法

嘿,我来帮你搞定修改单个节点颜色的问题!在Holoviews里,咱们有两种简单的方式实现这个需求,下面给你具体演示:

方法一:直接生成颜色列表指定

咱们可以先创建一个和节点顺序对应的颜色列表,把目标节点设为你想要的颜色,其他节点用默认颜色,然后通过node_color参数传递给Graph的配置:

%pylab inline
import pandas as pd
import networkx as nx
import holoviews as hv
hv.extension('bokeh')

G = nx.Graph()
ndxs = [1,2,3,4]
G.add_nodes_from(ndxs)
G.add_weighted_edges_from([(1,2,0), (1,3,1), (1,4,-1), (2,4,1), (2,3,-1), (3,4,10)])

# 自定义节点颜色:这里把节点1设为红色,其他用蓝色
node_colors = ['red' if node == 1 else 'blue' for node in G.nodes()]

hv.extension('bokeh')
# 在opts里指定node_color为咱们定义的颜色列表
%opts Graph [width=400 height=400 node_color=node_colors]
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
hv.Graph.from_networkx(G, nx.layout.spring_layout).redim.range(**padding)

方法二:给节点添加颜色属性(更灵活)

如果后续需要根据节点的不同属性动态调整颜色,咱们可以给NetworkX的节点直接添加颜色属性,然后让Holoviews根据这个属性来着色:

%pylab inline
import pandas as pd
import networkx as nx
import holoviews as hv
hv.extension('bokeh')

G = nx.Graph()
ndxs = [1,2,3,4]
G.add_nodes_from(ndxs)
G.add_weighted_edges_from([(1,2,0), (1,3,1), (1,4,-1), (2,4,1), (2,3,-1), (3,4,10)])

# 给每个节点添加color属性,节点1设为红色,其他为蓝色
for node in G.nodes():
    G.nodes[node]['color'] = 'red' if node == 1 else 'blue'

hv.extension('bokeh')
# 通过color_index指定使用节点的color属性来着色
%opts Graph [width=400 height=400 color_index='color']
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
hv.Graph.from_networkx(G, nx.layout.spring_layout).redim.range(**padding)

两种方法都能实现单个节点颜色的修改,你可以根据自己的需求选择。如果需要更多配色,也可以替换成十六进制颜色码(比如#FF5733)或者Holoviews支持的其他颜色名称哦~

内容的提问来源于stack exchange,提问作者Soerendip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:03:52