Post Processing

Tessif’s Post Processing Template and Utilitiy.

Transforming (optimized) energy systems to mappings.

ESTransformer defines an abstract base class serving as template. Down the lineage the energy system transformer family then divides into a triangular like structure:

  1. A Resultier branch which is a set of classes being responsible for extracting result like information and mapping them to the respective node uid string representation. They serve as interface to post processing utilities further down the chain.

  2. A Formatier branch which is a set of classes being responsible for generating format like information and mapping them to the respective node uid string representation.

    They are all descendants of resultiers. They serve as interface for visualizing utilities further down the post processing chain.

  3. A Hybridier branch which combines specific result and format results mapped to node uid string representations.

    They serve as specific post processing routines mainly for developing certain kinds of diagrams. See for example the ICRHybridier in conjunction with tessif.analyze.Comparatier.ICR_graphs.

class tessif.post_process.ESTransformer(optimized_es, **kwargs)[source]

Bases: abc.ABC

Abstract base class for the energy system transformer family.

All attributes needed to ensure framework compatibility are exposed here. Takes an optimized energy system instance and works its magic on it.

Calls:

  • _map_nodes()

  • _map_edges()

Parameters

optimized_es – Optimized energy system model.

defaults = {}

Dictionary of node and edge attribute defaults. Used by all attribute aggregating utilities throughout this framework to fill in attribute defaults instead of None.

property nodes

Mapped system model nodes.

Container of energy system component string representations interpretable as nodes.

property uid_nodes

Mapped node uids.

Mapping of energy system component uids (interpretable as nodes) to their node uid string representation.

property edges

Mapped system-model edges.

Container of energy system component string representations interpretable as edges.

property inbounds

Mappend inbound nodes.

Mapping of a list of inbound nodes (in fact their uid string representations) to the node (in fact its uid string representations) being the target of the inbounds.

Meaning, for an energy system like 1 -> 2 <-3, this mapping would look like

inbounds['1'] == []
inbounds['2'] == ['1', '3']
property outbounds

Mapped outbound nodes.

Mapping of a list of outbound nodes (in fact their uid string representations) to the node (in fact its uid string representations) being the source of the outbounds.

Meaning, for an energy system like 1 <- 2 -> 3, this mapping would look like

outbounds['1'] == []
outbounds['2'] == ['1', '3']
node_data()[source]

Map node parameter to its attribute name.

Function to get a ready to use dictionary of node attribute names and parameters as expected by other utilities throughout this framework.

Returns

attributes – Dictionary of node attributes and parameters as generated by this object provided all node attributes are of type property and contain node_ as well as not contain _node in its name.

Refer to XmplResultier to see how this implementation works out.

Return type

dict

Note

This assumes the naming convention is honored in that all node attributes are properties and contain node_ as well as not contain _node in their name. In fact being properties is not really necessary but a good practice anyways though.

edge_data()[source]

Map edge parameter to its attribute name.

Function to get a ready to use dictionary of edge attribute names and parameters as expected by other utilities throughout tessif.

Returns

attributes – Dictionary of edge attributes and parameters as generated by this object provided all edge attributes are of type property and contain edge_ as well as not contain _edge in its name.

Refer to XmplResultier to see how this implementation works out.

Return type

dict

Note

This assumes the naming convention is honored in that all edge attributes are properties and contain edge_ as well as not contain _edge in their name. In fact being properties is not really necessary but a good practice anyways though.

pickle(location)[source]

Pickle the resultier.

Parameters

location (str, default = None) – String representing of a path the Resultier is pickled to. Passed to: meth: pickle.dump.

dct_repr()[source]

Dictionairy Representation.

class tessif.post_process.XmplResultier(optimized_es=None, **kwargs)[source]

Bases: tessif.post_process.ESTransformer

An exemplary resultier like child of ESTransformer.

Serves as show case on how to use Resultier type objects when interfacing with other utilities in this framework. Often used in doctest like examples throughout the project. Therefor it needs to be independent of an optimized energy system. (Which is totally not what this family of classes is all about)

See OmfNetResultier for a real use case example.

Example

Recreating the XmplResultier to demonstrate a minimum working example. See the respective documentation below this example.

>>> from tessif.transform.es2mapping.base import ESTransformer
>>> class XmplResultier2(ESTransformer):
...     def __init__(self, optimized_es=None):
...         super().__init__(optimized_es=optimized_es)
...         self._node_attr_xmpl = 'red'
...         self._edge_attr_xmpl = {
...            edge: sum(tuple(map(int, edge))) for edge in self.edges}
...
...     def _map_nodes(self, optimized_es):
...         return ['1', '2', '3']
...
...     def _map_node_uids(self, optimized_es):
...         return ['1', '2', '3']
...
...     def _map_edges(self, optimized_es):
...         return [('1', '2'),  ('2', '3'), ('3', '1')]
...
...     @property
...     def node_attr_xmpl(self):  return self._node_attr_xmpl
...
...     @property
...     def edge_attr_xmpl(self): return self._edge_attr_xmpl
...
>>> XR = XmplResultier2()
>>> print(XR.nodes)
['1', '2', '3']
>>> print(XR.edges)
[('1', '2'), ('2', '3'), ('3', '1')]
>>> print(XR.node_data())
{'node_attr_xmpl': 'red'}
>>> print(XR.edge_data())
{'edge_attr_xmpl': {('1', '2'): 3, ('2', '3'): 5, ('3', '1'): 4}}
property node_attr_xmpl

Exemplary node attribute. Makes every node red.

Note

Remember that node_data() only detects attributes containing node_ and not containing _node in their name.

property edge_attr_xmpl

Example edge attribute.

Calculates the sum of the edge nodes. Emulates “optimized_es dependent logic”

Note

Remember that edge_data() only detects attributes containing edge_ and not containing _edge in their name.

class tessif.post_process.Resultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.ESTransformer

Transform nodes and edges into their name representation.

Child of ESTransformer and mother of all model specific resultiers.

Parameters

optimized_es – Optimized energy system model.

class tessif.post_process.IntegratedGlobalResultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Map integrated global results.

Extracting the integrated global results out of the energy system and conveniently aggregating them (rounded to unit place) inside a dictionary keyed by result name.

Parameters

optimized_es – Optimized energy system model.

See also

For examples check one of the plugin specific LoadResultier children like, e.g..: es2mapping.omf.IntegratedGlobalResultier.

property global_results

Integrated global results (IGR) mapped by result name.

Integrated global results currently consist of meta and non-meta results. the meta results are handled by the:mod:~tessif.analyze module and consist of:

  • time

  • memory

results, whereas the non-meta results consist of:

  • emissions

  • costs

results. The befornamed strings serve as key inside the mapping.

class tessif.post_process.ScaleResultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Extract number of constraints and store them as int.

Parameters

optimized_es – Optimized energy system model.

See also

For examples check one of the plugin specific ScaleResultier children like es2mapping.omf.ScaleResultier.

property number_of_constraints

Number of constraints describing the system model’s opt problem.

class tessif.post_process.LoadResultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Transform flow results into dictionaries keyed by node.

Parameters

optimized_es – Optimized energy system model.

See also

For examples check one of the plugin specific LoadResultier children like, e.g..: es2mapping.omf.LoadResultier.

property node_load

Mapped flow results.

Timeseries flow results mapped to their node uid representation.

Mapped are pandas.DataFrame objects containing:

property node_inflows

Map inflow results to uid representations.

Incoming timeseries flow results as positive values mapped to their node uid representation.

Mapped are pandas.DataFrame objects containing:

property node_outflows

Mapped outflow results to uid representations.

Outgoing timeseries flow results as positive values mapped to their node uid representation.

Mapped are pandas.DataFrame objects containing:

property node_summed_loads

Mapped summed load results to uid representations.

Summed timeseries flow results mapped to their node uid representation.

Mapped are pandas.Series objects containing:

  • Inbound flows as positive values for sinks

  • Outbound flows as positive values for all other components

class tessif.post_process.CapacityResultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Transforming installed capacity results dictionaries keyed by node.

Parameters
  • optimized_es – Optimized energy system model.

  • reference_capacity (Number, None default=None) – Number to externally set reference capacity. If None (default) maximum installed capacity is used.

  • kwargs – Key word arguments are passed to Resultier.

See also

For examples check one of the plugin specific CapacityResultier children like, e.g..: es2mapping.omf.CapacityResultier.

property node_installed_capacity

Mapped installed capacities to node uid representations.

Installed capacities of the energy system components mapped to their node uid representation.

Components of variable size have an installed capacity as stated in tessif.frused.defaults.energy_system_nodes.

\(P_{cap}= \text{installed capacity}\)

property node_original_capacity

Mapped original capacities to node uid representations.

Installed pre-optimization capacities of the energy system components mapped to their node uid representation.

Components of variable size have an installed capacity as stated in tessif.frused.defaults.energy_system_nodes.

\(P_{origcap}= \text{installed capacity}\)

property node_expansion_costs

Mapped expansion costs to node uid representations.

Installed capacity expansion costs for components mapped to their node uid representation.

property node_characteristic_value

Mapped characteristic values to node uid representations.

Characteristic values of the energy system components mapped to their node uid representation.

Components of variable size or have a characteristic value as stated in tessif.frused.defaults.energy_system_nodes.

Characteristic value in this context means:

  • \(cv = \frac{\text{characteristic flow}} {\text{installed capacity}}\) for:

    • Source objects

    • Sink objects

    • Transformer objects

  • \(cv = \frac{\text{mean}\left(\text{SOC}\right)} {\text{capacity}}\) for:

    • Storage

Characteristic flow in this context means:

The node fillsize of the advanced system visualization scales with the characteristic value. If no capacity is defined (i.e for nodes of variable size, like busses or excess sources and sinks, node size is set to it’s default ( nxgrph_visualize_defaults[node_fill_size]).

property node_reference_capacity

Mapped reference capacities to node uid representations.

The systems reference capacity, most often used as scaling factor.

Usually the highest installed capacity throughout the energy system.

property load_resultier

Used load resultier.

Plugin specific LoadResultier, used for calculating the characteristic values.

class tessif.post_process.StorageResultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Transforming storage results into dictionaries keyed by node.

Parameters

optimized_es – Optimized energy system model.

See also

For examples check one of the plugin specific StorageResultier children like, e.g..: es2mapping.omf.StorageResultier.

property node_soc

Mapped state of charge results.

Node uid representation to state of charge (soc) mapping for all storages of the energy system.

class tessif.post_process.NodeCategorizer(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Categorizing the nodes of an optimized oemof energy system.

Categorization utilizes Uid.

Nodes are categorized by:

  • Energy component (One of the component identifiers Bus’, ‘Sink’, etc..)

  • Energy sector (‘power’, ‘heat’, ‘mobility’, ‘coupled’)

  • Region (‘arbitrary label’)

  • Coordinates (latitude, longitude in degree)

  • Energy carrier (‘solar’, ‘wind’, ‘electricity’, ‘steam’ …)

  • Node type (‘arbitrary label’)

Parameters

optimized_es – Optimized energy system model.

See also

For examples check one of the plugin specific NodeCategorizer children like, e.g.: es2mapping.omf.NodeCategorizer.

groupings = {'components': 'component', 'energy_carriers': 'carrier', 'node_types': 'node_type', 'regions': 'region', 'sectors': 'sector'}

Groupings used to generate mappings of Uid attributes. Meaning for components: component a property called component_grouped will be generated using the component attribute.

categories = {'carriers': ['carrier'], 'coordinates': ['latitude', 'longitude']}

Categories of attributes that are mapped directly to each node uid representation of the energy system.

Meaning for an energy system like 1 -> 2 <-3, this mapping could look like

{'1': 'wind',
 '2': 'electricity',
 '3': 'solar'}

for the carrier category.

property node_components

Mapped component identifiers to node uid representations.

component identifiers of each node present in the energy system mapped to their node uid representation <Labeling_Concept>.

property node_coordinates

Mapped coordinates to node uid representations.

Latitude and longitude of each node present in the energy system mapped to their node uid representation <Labeling_Concept>.

property node_region_grouped

Mapped region identifiers to node uid representations.

Node uid representations grouped by region (i.e “World” “South” “Antinational”).

property node_sector_grouped

Mapped sector identifiers to node uid representations.

Node uid representations of the nodes present in the energy system grouped by energy sector (i.e “Power” “Heat” “Mobility” “Coupled”).

property node_type_grouped

Mapped component type identifiers to node uid representations.

Node uid representations of the energy system’s nodes grouped by node_type (arbitrary classification, i.e. “Combined_Cycle”, “Renewable”, …)

property node_carrier_grouped

Mapped carrier identifiers to node uid representations.

Node uid representations of the energy system’s nodes grouped by energy carrier. (i.e. “Electricity”, “Gas”, “Water”).

property node_energy_carriers

Mapped energy carrier identifiers to node uid representations.

Energy carrier mapped to the node uid representations of the nodes present in the energy system.

class tessif.post_process.FlowResultier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Transforming flow results into dictionaries keyed by edges.

Parameters

optimized_es – Optimized energy system model.

See also

For examples check one of the plugin specific FlowResultier children like, e.g.: es2mapping.omf.FlowResultier.

property edge_net_energy_flow

Mapped net energy flow results.

Time integrated flow results mapped to the respective Edges.

\(\sum\limits_{t} \text{flow}\left(Edge\right)\)

property edge_total_costs_incurred

Mapped total cost results.

Energy specific flow costs mapped to the respective Edges.

\(c_{\text{flow}}\) ins \(\frac{\text{cost unit}}{\text{energy unit}}\)

property edge_total_emissions_caused

Mapped total emission results.

Energy specific emissions mapped to the respective Edges.

\(e_{\text{flow}}\) in \(\frac{\text{emission unit}}{\text{energy unit}}\)

property edge_specific_flow_costs

Mapped specific flow costs.

Energy specific flow costs mapped to the respective Edges.

\(c_{\text{flow}}\) in \(\frac{\text{cost unit}}{\text{energy unit}}\)

property edge_specific_emissions

Mapped specific emission results.

Energy specific emissions mapped to the respective Edges.

\(e_{\text{flow}}\) in \(\frac{\text{emission unit}}{\text{energy unit}}\)

property edge_weight

Mapped edge weights.

Edge weights mapped to the respective Edges.

Edges are weighed by specific costs, scaled by maximum costs present. The more expensive, the heavier.

Edge weights can for example be used during visualization or for finding shortest paths .

property edge_len

Mapped edge len results.

property edge_reference_emissions

Reference emissions.

property edge_reference_net_energy_flow

Reference net energy flow.

class tessif.post_process.LabelFormatier(optimized_es, **kwargs)[source]

Bases: tessif.post_process.Resultier

Generate component summaries as multiline label dictionary entries.

Parameters

optimized_es – Optimized energy system model.

property node_summaries

Mapped node summaries.

Multiline node summary strings mapped to their node uid representation. Useful for certain on-the-fly debug / testing applications. (See tessif.visualize.nxgrph.draw_numerical_representation())

Summary consists of:

property edge_summaries

Mapped edge summaries.

Multiline edge summary strings mapped to their Edge Useful for certain on-the-fly debug/testing applications. (See tessif.visualize.nxgrph.draw_numerical_representation())

Summary consists of:

class tessif.post_process.MplLegendFormatier(optimized_es, cgrp='all', markers='formatier', **kwargs)[source]

Bases: tessif.post_process.Resultier

Generating visually enhanced matplotlib legends for nodes and edges.

Parameters
  • optimized_es – Optimized energy system model.

  • cgrp (str, default='name') –

    Which group of color attribute(s) to return. One of:

    {'name', 'carrier', 'sector'}
    

    Color related attributes are grouped by tessif.frused.namedtuples.NodeColorGroupings and are thus returned as a typing.NamedTuple. Certain api functionalities expect those attributes to be dicts. (Usually those working only on ESTransformer input). Use this parameter on Formatier creation to provide the expected dictionary.

  • markers (str, default='formatier') –

    What marker to use for legend entries. Either 'formatier' or one of the matplotlib.markers.

    If 'formatier' is used, markers will be inferred from NodeFormatier.node_shape.

property node_legend

Color grouped matplotlib legend attributes mapped to their parameter.

Grouping utilizes NodeColorGroupings. Available groupings are:

property node_style_legend

Mapped node style legend.

Matplotlib legend attributes mapped to their parameters to describe fency node styles. Fency as in:

  • variable node size being outer fading circles

  • cycle filling being proportional capacity factors

  • outer diameter being proportional installed capacities

property edge_style_legend

Mapped edge style legend.

Matplotlib legend attributes mapped to their parameters to describe the chosen edge style. Current style represents:

  • net energy flow being proportional to edge width

  • specific_emissions being proportional to darkness

  • specific flow costs being proportional to edge length

class tessif.post_process.NodeFormatier(optimized_es, cgrp='name', drawutil='nx', **kwargs)[source]

Bases: tessif.post_process.Resultier

Transforming energy system results into node visuals.

Parameters
  • optimized_es – Optimized energy system model.

  • cgrp (str, default='name') –

    Which group of color attribute(s) to return. One of:

    {'name', 'carrier', 'sector'}
    

    Color related attributes are grouped by tessif.frused.namedtuples.NodeColorGroupings and are thus returned as a typing.NamedTuple. Certain api functionalities expect those attributes to be dicts. (Usually those working only on ESTransformer input). Use this parameter on Formatier creation to provide the expected dictionary.

  • drawutil (str, default='nx') – Which drawuing utility backend to format node size, fil_size and shape to. 'dc' for plotly-dash-cytoscape or 'nx' for networkx-matplotlib.

property node_shape

Mapped node shapes to uid representations.

Nodes shapes mapped to their respective node uid representation.

bus

o

solar

s

connector

o

storage

s

commodity_source

o

transformer

8

default_source

o

wind

h

sink

8

property node_size

Mapped node sizes to uid representations.

Scaled node sizes mapped to their respective node uid representation.

Scaled by:

\(\frac{\text{installed capacity}}{\text{reference capacity}} \ \cdot\) self.defaults['node_size'].

Nodes of variable size will be set to default size. installed capacity and reference capacity are evaluated using CapacityResultier on optimized_es.

property node_fill_size

Mapped node fill sizes to uid representations.

Scaled node sizes mapped to their respective node uid representation.

Scaled using:

\(\text{capacity factor} \ \cdot\) self.defaults['node_size']

Nodes fillings of variably sized nodes will be set to default size. installed capacity is evaluated using CapacityResultier on optimized_es.

property node_color

Mapped node colors to uid representations.

Grouped node colors mapped to their respective node uid representation.

Grouping utilizes NodeColorGroupings. Available groupings are:

Returns

node_colors – Depending on cgrp either all groupings are returned as a typing.NamedTuple or a single grouping as dictionary.

Return type

tuple, dict

property node_color_maps

Mapped node color maps to uid representations.

Same as node_color with color maps that are cycled through for each member of the group.

Returns

node_color_maps – Depending on cgrp either all groupings are returned as a typing.NamedTuple or a single grouping as dictionary.

Return type

tuple, dict

class tessif.post_process.EdgeFormatier(optimized_es, drawutil='nx', cls=None, **kwargs)[source]

Bases: tessif.post_process.Resultier

Transforming energy system results into edge visuals.

Parameters
  • optimized_es – Optimized energy system model.

  • drawutil (str, default='nx') – Which drawuing utility backend to format node size, fil_size and shape to. 'dc' for plotly-dash-cytoscape or 'nx' for networkx-matplotlib.

  • cls (tuple, default=None) –

    2-Tuple / CLS namedtuple defining the relative flow cost thresholds and the respective style specifications. Used to map specific flow costs to edge line style representations.

    If None, default implementation is used based on drawutil.

    For drawutil='nx' Networkx-Matplotlib:

    cls = ([0, .33, .66], ['dotted', 'dashed', 'solid'])
    

    For drawutil='dc' Dash-Cytoscape styles are used:

    cls = ([0, .33, .66], ['dotted', 'dashed', 'solid'])
    

    Translating to all edges of relative specific flows costs, between 0 and .33 are correlated to have a ':'/'dotted' linestyle.

property edge_width

Edge widths mapped to their respective Edges.

Widths are scaled with the edge’s energy flow. The bigger the flow, the wider the edge.

Returns

edge_width – Dictionairies of edge widths (numbers) mapped to their respective Edges.

Return type

dict

property edge_color

Edge colors mapped to their respective Edge.

Greyscale is scaled with emissions. The less gray, the less emissions.

Returns

edge_color – Dictionairies of greyscale (numbers between 0.0 and 1.0) mapped to their respective Edges.

Return type

dict

property edge_linestyle

Edge line style mapped to their respective Edge.

Styles correlated specific flow_costs to thresholds as defined during instance ceation. The less expansive, the less solid the line style.

Returns

edge_linestyle – Dictionairies of linestyles (string specifiers like 'dashed' and 'dotted') mapped to their respective Edges.

Return type

dict

class tessif.post_process.ICRHybridier(optimized_es, node_formatier, edge_formatier, mpl_legend_formatier, **kwargs)[source]

Bases: tessif.post_process.Resultier

Hybrid Resultier and Formatier.

Aggregate numerical and visual information for drawing the advanced system visualization.

Parameters

optimized_es – Optimized energy system model.

property edge_color

Edge colors mapped to their Edge names.

The edge greyscale of the advanced system visualization scales with the specific emissions.

property edge_len

Edge length mapped to their Edge names.

The edge length of the advanced system visualization scales with the specific flow costs.

property edge_weight

Edge length mapped to their Edge names.

The edge length of the advanced system visualization scales with the specific flow costs.

property edge_net_energy_flow

Mapped net energy flows.

Return sum of time series flow results mapped to Edges.

\(\sum\limits_{t} \text{flow}\left(Edge\right)\)

The edge width of the advanced system visualization scales with the net energy flow.

property edge_specific_flow_costs

Mapped flow costs.

Return energy specific flow costs mapped to Edges.

\(c_{\text{flow}}\) in \(\frac{\text{cost unit}}{\text{energy unit}}\)

The edge length of the advanced system visualization scales with the specific flow costs.

property edge_specific_emissions

Mapped specific emissions.

Return energy specific emissions mapped to Edges.

\(e_{\text{flow}}\) in \(\frac{\text{emission unit}}{\text{energy unit}}\)

The edge greyscale of the advanced system visualization scales with the specific emissions.

property edge_width

Edge widths mapped to their Edge names.

The edge width of the advanced system visualization scales with the net energy flow.

property node_characteristic_value

Mapped characteristic values.

Characteristic values of the energy system components mapped to their node uid representation.

Components of variable size or have a characteristic value as stated in tessif.frused.defaults.energy_system_nodes.

Characteristic value in this context means:

  • \(cv = \frac{\text{characteristic flow}} {\text{installed capacity}}\) for:

    • Connector objects

    • Source objects

    • Sink objects

    • Transformer objects

  • \(cv = \frac{\text{mean}\left(\text{SOC}\right)} {\text{capacity}}\) for:

    • Storage

Characteristic flow in this context means:

The node fillsize of the advanced system visualization scales with the characteristic value.

If no capacity is defined (i.e for nodes of variable size, like busses or excess sources and sinks, node size is set to it’s default ( nxgrph_visualize_defaults[node_fill_size]).

property node_color

Grouped node colors mapped to their node names.

Grouping utilizes NodeColorGroupings. Available groupings are:

property node_installed_capacity

Mapped installe capacities.

Return the installed capacities of the energy system components as mapping keyed by node label. Components of variable size have an installed capacity of None

\(P_{cap}= \text{installed capacity}\)

The node size of the advanced system visualization scales with the installed capacity.

If no capacity is defined (i.e for nodes of variable size, like busses or excess sources and sinks, node size is set to it’s default ( nxgrph_visualize_defaults[node_size]).

property node_shape

Nodes shapes mapped to their node names.

Node shape mapping

‘default_source’

‘o’

‘bus’

‘o’

‘commodity_source’

‘o’

‘transformer’

‘8’

‘solar’

‘s’

‘sink’

‘8’

‘wind’

‘h’

storage

s

property node_size

Scaled node sizes mapped to their node names.

Scaled by:

\(\frac{\text{installed capacity}}{\text{reference capacity}} \ \cdot\) self.defaults['node_size'].

Installed capacity and reference capacity are evaluated using CapacityResultier on optimized_es.

The node size of the advanced system visualization scales with the installed capacity.

If no capacity is defined (i.e for nodes of variable size, like busses or excess sources and sinks, node size is set to it’s default ( nxgrph_visualize_defaults[node_size]).

property node_fill_size

Scaled node sizes mapped to their node names.

Scaled using:

\(\text{capacity factor} \ \cdot\) self.defaults['node_size']

Installed capacity is evaluated using CapacityResultier on optimized_es.

The node fillsize of the advanced system visualization scales with the characteristic value.

If no capacity is defined (i.e for nodes of variable size, like busses or excess sources and sinks, node size is set to it’s default ( nxgrph_visualize_defaults[node_fill_size]).

property legend_of_nodes

Color grouped matplotlib legend attributes mapped to their parameter.

Grouping utilizes NodeColorGroupings. Available groupings are:

property legend_of_node_styles

Mapped node style legends.

Matplotlib legend attributes mapped to their parameters to describe fency node styles. Fency as in:

  • variable node size being outer fading circles

  • cycle filling being proportional capacity factors

  • outer diameter being proportional installed capacities

property legend_of_edge_styles

Mapped edge style legends.

Matplotlib legend attributes mapped to their parameters to describe the edge style of the advanced system visualization. As in:

  • edge length scaling with specific flow costs

  • edge width scaling with net energy flow

  • grey scale scaling with speficifc flow emissions