Create & Draw Traces

Plotly traces can be created from pandapower networks with the following functions. The traces can be passed as additional_traces (list) to the simple_plotly() function.

Bus Traces

pandapower.plotting.plotly.traces.create_bus_trace(net, buses=None, size=5, patch_type='circle', color='blue', infofunc=None, trace_name='buses', legendgroup=None, cmap=None, cmap_vals=None, cbar_title=None, cmin=None, cmax=None, cpos=1.0, colormap_column='vm_pu')

Creates a plotly trace of pandapower buses. It is a wrapper function for the more generic _create_node_trace function.

Parameters:
  • net (pandapowerNet) – The pandapower network

  • buses (list, None) – The buses for which the collections are created. If None, all buses in the network are considered.

  • size (int, 5) – patch size

  • patch_type (str, "circle") – patch type, can be - “circle” for a circle - “square” for a rectangle - “diamond” for a diamond - all types for plots at https://plotly.com/python/reference/#scatter-marker-symbol - all types for maps at https://plotly.com/python/reference/#scatter-marker-symbol

  • infofunc (pd.Series, None) – hoverinfo for bus elements. Indices should correspond to the pandapower element indices

  • trace_name (String, "buses") – name of the trace which will appear in the legend

  • color (String, "blue") – color of buses in the trace

  • cmap (String, None) – name of a colormap which exists within plotly (Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis) alternatively a custom discrete colormap can be used. Append “_r” for inversion.

  • cmap_vals (list, None) – values used for coloring using colormap

  • cbar_title (String, None) – title for the colorbar

  • cmin (float, None) – colorbar range minimum

  • cmax (float, None) – colorbar range maximum

  • cpos (float, 1.1) – position of the colorbar

  • colormap_column (str, "vm_pu") – set color of bus according to this variable

Branch Traces

pandapower.plotting.plotly.traces.create_line_trace(net, lines=None, use_line_geo=True, respect_switches=False, width=1.0, color='grey', infofunc=None, trace_name='lines', legendgroup='lines', cmap=None, cbar_title=None, show_colorbar=True, cmap_vals=None, cmin=None, cmax=None, cpos=1.1, cmap_vals_category='loading_percent', hoverlabel=None, dash='solid')

Creates a plotly trace of pandapower lines. It is a power net specific wrapper function for the more generic _create_line_trace function.

Parameters:
  • net (pandapowerNet) – The pandapower network

  • lines (list, None) – The lines for which the collections are created. If None, all lines in the network are considered.

  • width (int, 1) – line width

  • infofunc (pd.Series, None) – hoverinfo for line elements. Indices should correspond to the pandapower element indices

  • trace_name (String, "lines") – name of the trace which will appear in the legend

  • color (String, "grey") – color of lines in the trace

  • legendgroup (String, None) – defines groups of layers that will be displayed in a legend e.g. groups according to voltage level (as used in vlevel_plotly)

  • cmap (String, None) – name of a colormap which exists within plotly if set to True default Jet colormap is used, alternative colormaps : Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis To revert the color map, append “_r” to the name.

  • cmap_vals (list, None) – values used for coloring using colormap

  • show_colorbar (bool, False) – flag for showing or not corresponding colorbar

  • cbar_title (String, None) – title for the colorbar

  • cmin (float, None) – colorbar range minimum

  • cmax (float, None) – colorbar range maximum

  • cpos (float, 1.1) – position of the colorbar

pandapower.plotting.plotly.traces.create_trafo_trace(net, trafos=None, color='green', trafotype='2W', width=5, infofunc=None, cmap=None, trace_name='2W transformers', cmin=None, cmax=None, cmap_vals=None, matching_params=None, use_line_geo=None)

Creates a plotly trace of pandapower trafos.

Parameters:
  • net (pandapowerNet) – The pandapower network

  • trafos (list, None) – The trafos for which the collections are created. If None, all trafos in the network are considered.

  • trafotype (String, "2W") – trafotype can be 2W or 3W and can define which transformer table is taken (trafo or trafo3w)

  • width (int, 5) – line width

  • infofunc (pd.Series, None) – hoverinfo for trafo elements. Indices should correspond to the pandapower element indices

  • trace_name (String, "lines") – name of the trace which will appear in the legend

  • color (String, "green") – color of lines in the trace

  • cmap (bool, False) – name of a colormap which exists within plotly (Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis)

  • cmap_vals (list, None) – values used for coloring using colormap

  • cbar_title (String, None) – title for the colorbar

  • cmin (float, None) – colorbar range minimum

  • cmax (float, None) – colorbar range maximum

Draw Traces

pandapower.plotting.plotly.traces.draw_traces(traces, on_map=False, map_style='basic', showlegend=True, figsize=1, aspectratio='auto', filename='temp-plot.html', auto_open=True, **kwargs)

plots all the traces (which can be created using create_bus_trace(), create_line_trace(), create_trafo_trace()) to PLOTLY (see https://plot.ly/python/)

Parameters:
  • traces (**traces** - list of dicts which correspond to plotly)

  • using (generated) – create_bus_trace, create_line_trace, create_trafo_trace

  • on_map (bool, False) – enables using mapLibre plot in plotly

  • map_style (str, 'basic') –

    enables using mapLibre plot in plotly

    • ’basic’

    • ’carto-darkmatter’

    • ’carto-darkmatter-nolabels’

    • ’carto-positron’

    • ’carto-positron-nolabels’

    • ’carto-voyager’

    • ’carto-voyager-nolabels’

    • ’dark’

    • ’light’

    • ’open-street-map’

    • ’outdoors’

    • ’satellite’’

    • ’satellite-streets’

    • ’streets’

  • showlegend (bool, 'True') – enables legend display

  • figsize (float, 1) – aspectratio is multiplied by it in order to get final image size

  • aspectratio (tuple, 'auto') – when ‘auto’ it preserves original aspect ratio of the

  • tuple (network geodata any custom aspectration can be given as a)

  • e.g. (1.2, 1)

  • filename (str, "temp-plot.html") – plots to a html file called filename. If None,

  • created (no file will be)

  • returned (just a plotly.Figure object will be)

  • auto_open (bool, 'True') – automatically open plot in browser

Returns:

figure object

Return type:

figure (graph_objs._figure.Figure)

Markers with weighted size

The function create_weighted_marker_trace() can be used to create additional traces with markers (patches) for one column in one component table.

pandapower.plotting.plotly.traces.create_weighted_marker_trace(net, elm_type='load', elm_ids=None, column_to_plot='p_mw', sizemode='area', color='red', patch_type='circle', marker_scaling=1.0, trace_name='', infofunc=None, node_element='bus', show_scale_legend=True, scale_marker_size=None, scale_marker_color=None, scale_legend_unit=None, trace_kwargs=None)

Create a single-color plotly trace markers/patches (e.g., bubbles) of value-dependent size.

If present in the respective pandapower-net table, the “in_service” and “scaling” column will be taken into account as factors to calculate the markers’ weights. Negative values might lead to unexpected results, especially when pos. and neg. values are mixed in one column! All values are treated as absolute values. If value = 0, no marker will be created.

Parameters:
  • net (ADict) – the net where the elements are located

  • elm_type (str) – the element table in the net that holds the values to plot

  • elm_ids (list[int] | None) – the element IDs of the elm_type table for which markers will be created. If None, all IDs in net[elm_type] that are not 0 or NaN in the column_to_plot will be used.

  • column_to_plot (str) – the column in the net[elm_type] table that will be plotted. The suffix (everything behind the last ‘_’ in the column name) will be used as the unit in the infofunc.

  • sizemode (str) – whether the markers’ “area” or “diameter” will be proportional to the represented value

  • color (str | tuple[int, int, int]) – color for the markers

  • patch_type (str) – plotly marker style that will be used (other options are triangle-up, triangle-down and many more; for non-filled markers, append “-open” cf. https://plotly.com/python/marker-style/)

  • marker_scaling (float) – factor to scale the size of all markers

  • trace_name (str) – trace name for the legend. If empty, elm_type will be used.

  • infofunc (pd.Series[Any] | Callable | None) – hover-infofuction to overwrite the internal infofunction

  • node_element (str) – the name of node elements in the net. “bus” for pandapower networks

  • show_scale_legend (bool) – display a marker legend at the top right of the plot

  • scale_marker_size (float | list[float] | None) – adjust the size of the scale, gets multiplied with marker_scaling. Default size is the average size of the respective weighted markers rounded to 5. A list of values will result in several scale marker legends.

  • scale_marker_color (str | None) – specify the color of the scale legend marker. If None, color will be used.

  • scale_legend_unit (str | None) – specifies the unit shown in the scale legend marker’s string. It does not trigger any unit conversions! If None, the last part of column_to_plot will be used (all upper case).

  • trace_kwargs (dict | None) – additional/updated entries for the marker trace that is created in this function, e.g. {“visible”: “legendonly”}

Returns:

dict for the plotly trace

Return type:

dict

Example with load and sgen bubbles:

net = mv_oberrhein()
net.load.scaling, net.sgen.scaling = 1, 1
markers_load = create_weighted_marker_trace(net, elm_type="load", color="red",
                                            marker_scaling=100)
markers_sgen = create_weighted_marker_trace(net, elm_type="sgen", color="green",
                                            marker_scaling=100)
simple_plotly(net, bus_size=1, additional_traces=[markers_load, markers_sgen])