Как импортировать группы из файла graphml? (networkx -> cytoscape)

Я пытаюсь перенести данные networkx в cytoscape. Я использую graphml, и с этой частью все в порядке, но у меня есть атрибут parent= имя_узла, с которым я хочу создать группу. Я не могу узнать, как отобразить это в cytoscape. Любые идеи о том, как автоматически создавать группы в Cytoscape?

Пример:

G = nx.Graph()
G.add_node("server1")
G.add_node("server1_port1", parent="server1")
G.add_node("server1_port2", parent="server1")
G.add_node("server2")
G.add_node("server2_port1", parent="server2)
G.add_node("server2_port2", parent="server2)
G.add_edge("server1_port1", "server2_port1")
nx.write_graphml(G, "output.graphml")

Это должно выглядеть примерно так:

+-----------------+
|    server1      |
|                 |
| {port1} {port2} |
|    ~            |
|    |            |
+----|------------+
     |
+----|------------+
|    server2      |
|    |            |
|    ~            |
| {port1} {port2} |
|                 |
+-----------------+

1 ответ

К сожалению, наш читатель GraphML не поддерживает группы - я могу придумать способы сделать это полуавтоматически, но я не уверен, что вы этого хотите. Что вам нужно сделать, это добавить атрибут к каждому из ваших узлов (например, "родитель"), а затем создать группы, используя этот атрибут (setsApp поможет вам сделать это). Создав группы, используйте визуализацию составного узла, чтобы получить желаемый вид.

-- самокат

Другие вопросы по тегам