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]