Перенос макета из сети на cytoscape - PullRequest
9 голосов
/ 29 апреля 2011

Я хочу использовать networkx для создания макета для графика.Можно ли перенести этот макет в cytoscape и нарисовать его там?Я пытался просто написать график как

import networkx as nx
G = nx.Graph()
G.add_edge(0,1,weight=.1)
G.add_edge(2,1,weight=.2)
nx.write_gml(G,'g.gml')
nx.write_graphml(G,'g.xml')

Но ни один из них не читается в cytoscapeЯ не уверен, как передать график в формате, который может включать позиции.

1 Ответ

12 голосов
/ 29 апреля 2011

Ваш g.xml файл GraphML выглядит хорошо и загружается в Cytoscape для меня (я на Mac). Вы установили плагин graphmlreader ?

Если нет, загрузите его и поместите в папку с плагинами, затем перезапустите Cytoscape и попробуйте снова загрузить сеть g.xml.

Обновление Вот некоторый код для добавления графического внешнего вида и позиционирования к графику networkx. Это немного многословно, и вы можете опустить некоторые атрибуты в зависимости от ваших потребностей:

import networkx as nx

G = nx.Graph()
G.add_edge(0, 1, weight=0.1, label='edge', graphics={
    'width': 1.0, 'fill': '"#0000ff"', 'type': '"line"', 'Line': [],
    'source_arrow': 0, 'target_arrow': 0})
nx.set_node_attributes(G, 'graphics', {
    0: {'x': -85.0, 'y': -97.0, 'w': 20.0, 'h': 20.0,
        'type': '"ellipse"', 'fill': '"#889999"', 'outline': '"#666666"',
        'outline_width': 1.0},
    1: {'x': -16.0, 'y': -1.0, 'w': 40.0, 'h': 40.0,
        'type': '"ellipse"', 'fill': '"#ff9999"', 'outline': '"#666666"',
        'outline_width': 1.0}
    })
nx.set_node_attributes(G, 'label', {0: "0", 1: "1"})
nx.write_gml(G, 'network.gml')

Результат:

enter image description here

...