Tree
- D3Blocks.tree(df: DataFrame, hierarchy=[1, 2, 3, 4, 5, 6, 7, 8], margin={'bottom': 20, 'left': 60, 'right': 80, 'top': 20}, font={'size': 10}, title: str = 'Tree - D3blocks', filepath: str = 'tree.html', figsize=[960, 700], showfig: bool = True, overwrite: bool = True, notebook: bool = False, save_button: bool = True, return_html: bool = False, reset_properties: bool = True)
Tree block.
A Tree chart is a visualization to hierarchically show the data. For demonstration purposes, the “energy” dataset can be used. The javascript code is forked from Mike Bostock, inspired by R-Shiny and then Pythonized.
- Parameters:
df (pd.DataFrame()) –
- Input data containing the following columns:
’source’, ‘target’, ‘weight’
hierarchy (list) – Expand or substract the hierarchical structure. No information is lossed. The eight branches are shown by default. * [1, 2, 3, 4, 5, 6, 7, 8]
margin (dict.) –
- margin, in pixels.
{“top”: 40, “right”: 10, “bottom”: 10, “left”: 10}
font (dict.) –
- font properties.
{‘size’: 10}
title (String, (default: None)) –
- Title of the figure.
’Treemap’
filepath (String, (Default: user temp directory)) –
File path to save the output.
Temporarily path: ‘d3blocks.html’
Relative path: ‘./d3blocks.html’
Absolute path: ‘c://temp//d3blocks.html’
None: Return HTML
figsize (tuple) –
- Size of the figure in the browser, [width, height].
[1000, 600]
[None, None]: Use the screen resolution.
showfig (bool, (default: True)) –
True: Open browser-window.
False: Do not open browser-window.
overwrite (bool, (default: True)) –
True: Overwrite the html in the destination directory.
False: Do not overwrite destination file but show warning instead.
notebook (bool) –
True: Use IPython to show chart in notebook.
False: Do not use IPython.
save_button (bool, (default: True)) –
True: Save button is shown in the HTML to save the image in svg.
False: No save button is shown in the HTML.
return_html (bool, (default: False)) –
True: Return html
False: Nothing is returned
reset_properties (bool, (default: True)) –
True: Reset the node_properties at each run.
False: Use the d3.node_properties()
- Returns:
d3.node_properties (DataFrame of dictionary) – Contains properties of the unique input label/nodes/samples.
d3.edge_properties (DataFrame of dictionary) – Contains properties of the unique input edges/links.
d3.config (dictionary) – Contains configuration properties.
Examples
>>> # Load d3blocks >>> from d3blocks import D3Blocks >>> # >>> # Initialize >>> d3 = D3Blocks() >>> # >>> # Load example data >>> df = d3.import_example('energy') >>> # >>> # Plot >>> d3.tree(df) >>> #
Examples
>>> # Load library >>> from d3blocks import D3Blocks >>> >>> # Initialize >>> d3 = D3Blocks(verbose='info', chart='tree', frame=False) >>> >>> # Import example >>> df = d3.import_example('energy') >>> >>> # Set node properties >>> d3.set_node_properties(df) >>> >>> # Set specific properties >>> d3.node_properties.get('Bio-conversion')['size'] = 30 >>> d3.node_properties.get('Bio-conversion')['color'] = '#000000' >>> d3.node_properties.get('Bio-conversion')['tooltip'] = 'Title: P Operations<br><img src="https://source.unsplash.com/collection/385548/150x100">' >>> d3.node_properties.get('Bio-conversion')['edge_color'] = '#00FFFF' >>> d3.node_properties.get('Bio-conversion')['edge_size'] = 5 >>> d3.node_properties.get('Bio-conversion')['opacity'] = 0.4 >>> >>> # Set properties for Losses >>> d3.node_properties.get('Losses')['color'] = '#FF0000' >>> d3.node_properties.get('Losses')['size'] = 15 >>> d3.node_properties.get('Losses')['tooltip'] = '' >>> >>> # Set properties for Agriculture >>> d3.node_properties.get('Agriculture')['color'] = '#00FFFF' >>> d3.node_properties.get('Agriculture')['size'] = 5 >>> d3.node_properties.get('Agriculture')['edge_color'] = '#89CFF0' >>> d3.node_properties.get('Agriculture')['edge_size'] = 3 >>> d3.node_properties.get('Agriculture')['opacity'] = 0.7 >>> >>> # Set edge properties >>> d3.set_edge_properties(df) >>> >>> # Show chart >>> d3.show(hierarchy=[1, 2, 3, 4, 5, 6, 7, 8], filepath=r'c://temp//tree.html')
Examples
>>> # Load d3blocks >>> from d3blocks import D3Blocks >>> # >>> # Initialize >>> d3 = D3Blocks(chart='tree', frame=True) >>> # >>> # Import example >>> df = d3.import_example('energy') >>> # >>> # Node properties >>> d3.set_node_properties(df) >>> print(d3.node_properties) >>> # >>> d3.set_edge_properties(df) >>> print(d3.edge_properties) >>> # >>> # Show the chart >>> d3.show()
References
Input Data
The input dataset is a DataFrame that is hierarchically ordered from left to right. The number can be 3 levels and the column weight is obligatory.
# 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]