如何向networkx bokeh p添加分类图例

2024-05-13 18:31:31 发布

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

我有以下代码从NetworkX制作一个bokeh图

p = figure(x_range=(-1.1, 1.1), y_range=(-1.1, 1.1))
p.grid.visible = False
p.axis.visible = False

graph_renderer = from_networkx(G, nx.spring_layout, random_state=11, center=(0, 0), scale=1, k=0.5)
color_map = factor_cmap('domain_cat', factors=factors, palette=Category10_6)

graph_renderer.node_renderer.glyph = Circle(radius=0.02, fill_color=color_map, line_color=None, fill_alpha=1)
graph_renderer.edge_renderer.glyph = MultiLine(line_color='lightgray', line_alpha=0.3, line_width=2)
p.renderers.append(graph_renderer)

p.add_tools(HoverTool(tooltips='@index', show_arrow=None))

show(p)

效果很好。但是,我有一个节点的分类颜色映射。我想加一个传说。在

使用绘图界面时,只需输入源列名(https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html#colors),就可以轻松添加分类图例。在

然而,我不知道如何使用Legend和LegendItem生成一个分类的图例,即使是通过models接口。在

我尝试过以下变体:

^{pr2}$

但是这会产生以下结果,一个空的图例是正确的高度,控制台错误为TypeError: v is undefined; can't access its "draw_legend" property。在

enter image description here


Tags: nonefalsemaplinebokeh分类rangefill