全息图中图形颜色索引的交互选择

2024-04-20 09:16:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我用networkx在jupyter笔记本中创建了一个图表。 图的每个节点有三个不同的属性。布局(spring_Layout)和用holoviews可视化图形,我想创建一个小部件,在那里我可以选择哪些属性作为“颜色索引”,这样我就可以快速地可视化与属性相关的节点聚类。边权重是根据不属于属性的工程特征计算的。在

把人的图想象成一个节点,其边缘权重是共享的兴趣,节点的三个属性可以是“高度”、“度数”和“首选食物”。在

我遇到了这样一个问题:holoviews只接受“plot options”中的“color_index”,所以即使在交互式小部件中,实际上也只有一个属性被用作“color_index”。在

下面是我代码的相关部分(我称属性为“label”):

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\u图,现在应该运行了。在


Tags: networkxnodeindex属性节点plotmylabel