Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
132 lines (108 sloc) 3.82 KB

Use network style in Python

The network data tuned by the visualization can be posted back to Python. The visualization function can actually return two dictionaries, the first containing information about the stylized network, the second containing information about the visualization control configuration.

Start a visualization like this

import networkx as nx
import netwulf as wulf

G = nx.barabasi_albert_graph(100,2)

stylized_network, config = wulf.visualize(G)

A visualization window is opened and the network can be stylized. Once you're done, press the button Post to Python.

img/post_to_python.png

Pressing this button will pipe the data back to Python and close the browser The Python kernel is busy until either Post to Python is clicked or a KeyboardInterrupt signal is send (manually or using the Stop-Button in a Jupyter notebook).

The returned stylized network dictionary will contain all the necessary information to reproduce the figure. It will look something like this.

stylized_network = {
    'xlim': [0, 833],
    'ylim': [0, 833],
    'linkColor': '#7c7c7c',
    'linkAlpha': 0.5,
    'nodeStrokeColor': '#000000',
    'nodeStrokeWidth': 0.75,
    'links': [
        {'source': 0, 'target': 2, 'width': 3},
        {'source': 0, 'target': 3, 'width': 3},
        {'source': 0, 'target': 4, 'width': 3},
        {'source': 1, 'target': 2, 'width': 3},
        {'source': 1, 'target': 3, 'width': 3},
        {'source': 1, 'target': 4, 'width': 3}
    ],
    'nodes': [
        {'id': 0,
         'x': 436.0933431058901,
         'y': 431.72418500564186,
         'radius': 20,
         'color': '#16a085'},
        {'id': 1,
         'x': 404.62184898400426,
         'y': 394.8158724310507,
         'radius': 20,
         'color': '#16a085'},
        {'id': 2,
         'x': 409.15148692745356,
         'y': 438.08415417584683,
         'radius': 20,
         'color': '#16a085'},
        {'id': 3,
         'x': 439.27989436871223,
         'y': 397.14932001193233,
         'radius': 20,
         'color': '#16a085'},
        {'id': 4,
         'x': 393.4680683212157,
         'y': 420.63184247673917,
         'radius': 20,
         'color': '#16a085'}
    ]
}

Furthermore, the configuration dictionary which was used to generate this figure will resemble

default_config = {
    # Input/output
    'zoom': 1,
    # Physics
    'node_charge': -45,
    'node_gravity': 0.1,
    'link_distance': 15,
    'link_distance_variation': 0,
    'node_collision': True,
    'wiggle_nodes': False,
    'freeze_nodes': False,
    # Nodes
    'node_fill_color': '#79aaa0',
    'node_stroke_color': '#555555',
    'node_label_color': '#000000',
    'display_node_labels': False,
    'scale_node_size_by_strength': False,
    'node_size': 5,
    'node_stroke_width': 1,
    'node_size_variation': 0.5,
    # Links
    'link_color': '#7c7c7c',
    'link_width': 2,
    'link_alpha': 0.5,
    'link_width_variation': 0.5,
    # Thresholding
    'display_singleton_nodes': True,
    'min_link_weight_percentile': 0,
    'max_link_weight_percentile': 1
}

If the visualization was started from a Jupyter notebook, a picture of the stylized network will appear in the cell below.

img/figure_in_jupyter.png

Stylized network in a Jupyter notebook.

In order to reproduce this visualization, you may want to call the visualization function again with, passing the produced configuration.

wulf.visualize(G, config=config)
You can’t perform that action at this time.