Как передать атрибуты Node во всплывающие подсказки HoverTool при использовании метода Holoviews from_networkx - PullRequest
0 голосов
/ 23 января 2019

плохо знакомы с holoviews, bokeh и networkx.

Я пытаюсь построить визуализацию, где я раскрываю все атрибуты узла при наведении. Я строю график с помощью networkx и использую метод Holoviews from_networkx для импорта в класс графика holoviews.

Я видел это, которое имеет отношение (то есть атрибуты узла теперь импортируются при использовании from_networkx): https://github.com/ioam/holoviews/issues/2696

Однако я изо всех сил пытаюсь сослаться на атрибуты узла в подсказках. Это код, использующий пример клуба каратэ, который работает:

%%opts Graph [color_index='circle']
%%opts Graph (node_size=5 edge_line_width=1)
%opts Graph [width=900 height=900]

colours = ['#000000']+hv.Cycle('Category20').values

G_kcg = nx.karate_club_graph()

hover_kcg = HoverTool(tooltips=[("Club", "@club")])

plot_kcg = hv.Graph.from_networkx(G_kcg, nx.spring_layout)
plot_kcg = plot_kcg.options(cmap=colours,tools=[hover_kcg])

bundled = bundle_graph(plot_kcg)
bundled

Однако, переключаясь на мой собственный набор данных, он просто возвращает '???' в подсказке:

%%opts Graph [color_index='circle']
%%opts Graph (node_size=5 edge_line_width=1)
%opts Graph [width=900 height=900]

colours = ['#000000']+hv.Cycle('Category20').values

hover = HoverTool(tooltips=[("Name", "@crew_name")])

plot_all = hv.Graph.from_networkx(G_all, nx.spring_layout)
plot_all = plot_all.options(cmap=colours,tools=[hover])

bundled = bundle_graph(plot_all)
bundled

Вывод NodeDataView для обоих графиков выглядит для меня в одном и том же формате:

G_kcg.nodes(data=True)

NodeDataView ({0: {'club': 'Mr. Hi'}, 1: {'club': 'Mr. Hi'}, 2: {'club': 'Mr. Hi'}, 3: {'club': 'Mr. Hi'}, 4: {'club': 'Mr. Hi'}, 5: {'club': 'Mr. Hi'}, 6: {'club': 'Mr. Привет '}, 7: {' club ':' Mr. Hi '}, 8: {' club ':' Mr. Hi '}, 9: {' club ':' Officer '}, 10: {' club ' : 'Mr. Hi'}, 11: {'club': 'Mr. Hi'}, 12: {'club': 'Mr. Hi'}, 13: {'club': 'Mr. Hi'}, 14: {'club': 'Officer'}, 15: {'club': 'Officer'}, 16: {'club': 'Mr. Hi'}, 17: {'club': 'Mr. Hi' }, 18: {'club': 'Officer'}, 19: {'club': 'Mr. Hi'}, 20: {'club': 'Officer'}, 21: {'club': 'Mr. Привет!}, 22: {'club': 'Officer'}, 23: {'club': 'Officer'}, 24: {'club': 'Officer'}, 25: {'club': 'Officer' }, 26: {'club': 'Officer'}, 27: {'club': 'Officer'}, 28: {'club': 'Officer'}, 29: {'club': 'Officer'}, 30: {'club': 'Officer'}, 31: {'club': 'Officer'}, 32: {'club': 'Officer'}, 33: {'club': 'Officer'}})

G_all.nodes(data=True)

NodeDataView ({12240216: {'crew_name': u'a '}, ... 8421367: {' crew_name ': u'b'}})

Извиняюсь, если я не прояснил проблему вообще, был бы признателен за любую помощь, которую я могу получить, поскольку я избивал его этим часами подряд!

Спасибо:)

...