我已经在 jupyter笔记本中使用 networkx 创建了一个图形。 图的每个节点具有三个不同的属性。布局(spring_layout)并使用 holoviews 可视化图形,我想创建一个小部件,在其中可以选择将哪些属性用作“ color_index”,以便可以快速可视化相对于属性。边缘权重是根据工程特征计算的,而工程特征不是属性的一部分。
以人为图的节点为例,其边缘权重是共同的利益,节点的三个属性可以是“身高”,“程度”和“首选食物”。
我遇到了一个问题,即全息视图仅在“绘图选项”中接受“ color_index”,因此即使在交互式小部件中,也只有一个属性实际用作“ color_index”。
这是我代码的相关部分(我称属性为“标签”):
import holoviews as hv
import networkx as nx
my_graph = nx.star_graph(5)
nx.set_node_attributes(my_graph, name="height", values="Tall")
nx.set_node_attributes(my_graph, name="degree", values="MSc")
nx.set_node_attributes(my_graph, name="preferredfood", values="Pizza")
def get_graph(label):
plot_opts = dict(color_index = label,
edge_color_index = "weight",
width = 500,
height = 500,
xaxis = None,
yaxis = None,
show_frame = False,
tools = ['hover'])
style_opts = dict(node_size = 15,
cmap = "RdYlBu",
node_alpha = 0.95,
edge_cmap = "blues",
edge_line_width = 0.85,
edge_alpha = 1)
return hv.Graph.from_networkx(my_graph,
layout_function = nx.spring_layout,
k = 15,
iterations = 10,
scale = 2,
random_state = 100).opts(style = style_opts,
plot = plot_opts)
hv.HoloMap({label: get_graph(label) for label in ["height","degree","preferredfood"]}, kdims=["label"])
可能我的方法已关闭,但我不确定如何进行。
编辑:我在上面的代码中模拟了一个my_graph,该代码应立即运行。