Имена узлов HvPlot Networkx с наведением - PullRequest
0 голосов
/ 20 марта 2019

Я использую hvplot (версия 0.4.0) с неориентированным графом networkx (networkx версия 2.1).При построении графика с использованием боке-интерфейса bokeh я хотел бы, чтобы при наведении указывалось имя узла, а не «index: number».

Все примеры в Интернете в документах содержат «index: number», я пробовалпередать имена в kwargs «метки», но это приводит к ошибке:

DataError: предоставленные данные не содержат указанные измерения, не найдены следующие измерения:

import networkx as nx
import hvplot.networkx as hvnx
import holoviews as hv
hv.extension('bokeh')
GG = nx.Graph()
GG.add_edge('A','B')
GG.add_edge('B','C')
GG.add_edge('C','A')
hvnx.draw(GG)

enter image description here

Цикл по объекту GG, предоставляет следующую информацию

for ii in GG.nodes():

    print(ii,type(ii))

A <class 'str'>
C <class 'str'>
B <class 'str'>

for ee in GG.edges():

    print(ee,type(ee))

('A', 'C') <class 'tuple'>
('A', 'B') <class 'tuple'>
('C', 'B') <class 'tuple'>

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Мое решение

var selected_nodes = cb_data.source.selected["1d"].indices.map(function (selected_node_index) {
  return cb_data.source.data.index_hover[selected_node_index];
});


см. Cb_data.source.selected ["1d"]. Indexices

0 голосов
/ 20 марта 2019

Кажется, что то, что вы пытаетесь сделать, должно быть поведением по умолчанию и, вероятно, представляет некоторую регрессию в HoloViews. Тем не менее, фактические данные индекса при наведении фактически добавляются к графику, на который просто неправильно ссылаются. В своем примере вы можете убедиться, что он используется правильно, явно объявив bokeh HoverTool:

from bokeh.models import HoverTool

GG = nx.Graph()
GG.add_edge('A','B')
GG.add_edge('B','C')
GG.add_edge('C','A')
hvnx.draw(GG).opts(tools=[HoverTool(tooltips=[('index', '@index_hover')])])

enter image description here

Я уже подал проблему , чтобы отметить эту регрессию, и вы должны ожидать, что это будет исправлено в holoviews 1.12.0.

...