Elasticgraph


D3 Elasticgraph block.

Elasticgraph is integrated in d3blocks to create interactive and stand-alone D3 force-directed graphs for which the groups are clustered. The original d3js is forked from Ger Hobbelts (see references). The input data is a dataframe containing source, target, and weight. This graph relies on the properties of d3graph and is also utilized in the d3blocks library. In underneath example, we load an example dataset which contains K relationships that are stored in a DataFrame with the columns source, target, and weight. The nodes are clustered (and colored) based on the Louvain heuristics which is the partition of highest modularity, i.e. the highest partition of the dendrogram generated by the Louvain algorithm. The strength of the edges is based on the weights. The ouput is a html file that is interactive and stand alone. For demonstration purposes, the “bigbang”, “energy” and “stormofswords” dataset can be used.

param df:
Input data containing the following columns:
  • ‘source’

  • ‘target’

  • ‘weight’

type df:

pd.DataFrame()

param group:
Grouping (and coloring) of the nodes.
  • ‘cluster’ : Colours are based on the community distance clusters.

  • None: All nodes will have the same color (auto generated).

type group:

list of strings (default: ‘cluster’)

param collision:

Response of the network. Higher means that more collisions are prevented.

type collision:

float, (default: 0.5)

param charge:

Edge length of the network. Towards zero becomes a dense network. Higher make edges longer.

type charge:

int, (default: 250)

param size:

Size of the nodes.

type size:

float, (default: 4)

param hull_offset:

The higher the number the more the clusters will overlap after expanding.

type hull_offset:

float, (default: 15)

param single_click_expand:

Nodes are not expanded with a single click.

type single_click_expand:

bool, (default: False)

param title:
Title of the figure.
  • ‘elasticgraph’

type title:

String, (default: None)

param filepath:
File path to save the output.
  • Temporarily path: ‘d3blocks.html’

  • Relative path: ‘./d3blocks.html’

  • Absolute path: ‘c://temp//d3blocks.html’

  • None: Return HTML

type filepath:

String, (Default: user temp directory)

param figsize:
Size of the figure in the browser, [width, height].
  • [None, None] # Full screen

  • [1500, 800]

type figsize:

tuple

param showfig:
  • True: Open browser-window.

  • False: Do not open browser-window.

type showfig:

bool, (default: True)

param notebook:
  • True: Use IPython to show chart in notebook.

  • False: Do not use IPython.

type notebook:

bool

param save_button:
  • True: Save button is shown in the HTML to save the image in svg.

  • False: No save button is shown in the HTML.

type save_button:

bool, (default: True)

param overwrite:
  • True: Overwrite the html in the destination directory.

  • False: Do not overwrite destination file but show warning instead.

type overwrite:

bool, (default: True)

rtype:

None.

Examples

>>> # Load library
>>> from d3blocks import D3Blocks
>>> #
>>> # Initialize
>>> d3 = D3Blocks()
>>> #
>>> # Import example
>>> df = d3.import_example('energy') # 'stormofswords'
>>> #
>>> # Create force-directed-network (without cluster labels)
>>> d3.elasticgraph(df, filepath='Elasticgraph.html')
>>> #
>>> # Show elasticgraph
>>> d3.Elasticgraph.show()
>>> # Show original graph with the same properties
>>> d3.Elasticgraph.D3graph.show()
>>> #
>>> # Add cluster labels (no need to do it again because it is the default)
>>> # d3.Elasticgraph.set_node_properties(color=None)
>>> #
>>> # After making changes, show the graph again using show()
>>> d3.Elasticgraph.show()
>>> # Show original graph
>>> d3.Elasticgraph.D3graph.show()
>>> #
>>> # Node properties
>>> d3.Elasticgraph.D3graph.node_properties
>>> #
>>> # Node properties
>>> d3.Elasticgraph.D3graph.edge_properties
>>> #

References

Input Data

The input dataset is a DataFrame with three column, source, target and weight.

#                      source            target   weight
# 0      Agricultural 'waste'    Bio-conversion  124.729
# 1            Bio-conversion            Liquid    0.597
# 2            Bio-conversion            Losses   26.862
# 3            Bio-conversion             Solid  280.322
# 4            Bio-conversion               Gas   81.144
# ..                      ...               ...      ...
# 63       Thermal generation  District heating   79.329
# 64                    Tidal  Electricity grid    9.452
# 65  UK land based bioenergy    Bio-conversion  182.010
# 66                     Wave  Electricity grid   19.013
# 67                     Wind  Electricity grid  289.366

# [68 rows x 3 columns]

Charts

Default

Change node properties