Skip to main content

Interactive web visualizer for pandapower networks

Project description

pandapower-viz

Interactive web visualizer for pandapower networks. Render power system diagrams and geographic maps — in the browser, in Jupyter notebooks, or embedded in React apps.

pandapower-viz screenshot

Features

  • Network Diagram — Interactive graph visualization with vis-network. Zoom, pan, drag, and click elements to inspect properties.
  • Geographic Map — Plot buses and lines on OpenStreetMap when coordinates are available.
  • Color Modes — Color by element type, voltage level, or loading percentage.
  • Compact Mode — Automatically simplifies large networks (>500 buses) for performance.
  • Dark & Light Themes — Full theme support via CSS custom properties.
  • Dual Distribution — Use from Python (pip install) or React (npm install).
  • Jupyter Support — Renders inline in notebook cells via anywidget.

Python Usage

pip install pandapower-viz
import pandapower as pp
import pandapower_viz as pv

net = pp.networks.case_ieee30()
pp.runpp(net)
pv.show(net)  # opens browser at localhost:8050

Jupyter Notebook

pv.show(net) auto-detects Jupyter and renders the diagram inline in the cell:

# In a Jupyter notebook cell:
import pandapower as pp
import pandapower_viz as pv

net = pp.networks.case_ieee30()
pp.runpp(net)
pv.show(net)  # renders inline — no browser tab opened

You can also use the widget directly for more control:

from pandapower_viz import NetworkWidget

w = NetworkWidget.from_net(net)
display(w)

# Update the network later:
pp.runpp(net)
w.update_network(net)

React Usage

npm install pandapower-viz
import { NetworkDiagram, parsePandaPowerJson } from 'pandapower-viz';
import 'pandapower-viz/dist/style.css';

function App({ data }) {
  const network = parsePandaPowerJson(data);
  return (
    <NetworkDiagram
      network={network}
      theme="dark"
      onElementSelect={(el) => console.log(el)}
    />
  );
}

Components

Component Description
NetworkDiagram Interactive network graph (vis-network). Supports color modes, compact mode, physics simulation.
NetworkMap Geographic map (Leaflet/OpenStreetMap). Shows buses as markers, lines as polylines.

Utilities

Function Description
parsePandaPowerJson(data) Parse pandapower JSON (from pp.to_json()) into a typed network object.
convertToVisNetwork(network) Convert network to vis-network nodes and edges (detailed mode).
convertToVisNetworkCompact(network) Convert to simplified nodes/edges for large networks.
getNetworkStatistics(network) Get element counts (buses, lines, trafos, etc.).
extractGeodata(network) Extract geographic coordinates from bus data.
getElementInfo(element, network) Get detailed properties for a selected element.
calculateTreeLayout(nodes, edges) Compute hierarchical tree positions for network nodes.

Theming

pandapower-viz uses CSS custom properties prefixed with --ppviz-. Override them to match your app's theme:

:root {
  --ppviz-bg-primary: var(--your-bg);
  --ppviz-text-primary: var(--your-text);
  --ppviz-brand-accent: var(--your-accent);
}

Or use the data-ppviz-theme attribute for built-in dark/light themes:

<div data-ppviz-theme="light">
  <!-- pandapower-viz components here -->
</div>

Supported Elements

Buses, lines, transformers (2-winding), loads, generators, static generators (solar PV, wind), battery storage, switches, external grids.

Requirements

  • Python: 3.9+ with pandapower
  • React: 18+
  • Peer dependencies: react, react-dom

Development

git clone https://github.com/matheusduartedm/pandapower-viz
cd pandapower-viz/frontend
npm install
npm run dev        # start dev server
npm test           # run tests
npm run build-lib  # build npm library

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pandapower_viz-1.1.0.tar.gz (797.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pandapower_viz-1.1.0-py3-none-any.whl (510.3 kB view details)

Uploaded Python 3

File details

Details for the file pandapower_viz-1.1.0.tar.gz.

File metadata

  • Download URL: pandapower_viz-1.1.0.tar.gz
  • Upload date:
  • Size: 797.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for pandapower_viz-1.1.0.tar.gz
Algorithm Hash digest
SHA256 9360c8886762ed8ae3bc2cfa2e7e7e7e42b5f17589e0e3b3d2ee1b8d77079697
MD5 231e54a1ef01472441be7684bf631790
BLAKE2b-256 afe45b28104eb47cceb146c19eb79f080e7f82c56d00db9238c2cf7f3c8dbba8

See more details on using hashes here.

File details

Details for the file pandapower_viz-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: pandapower_viz-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 510.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for pandapower_viz-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14a9519914b6bc49cba0035af17e8c24a3987060fe6ed181b5d41bdab026a951
MD5 f1ecaadef7e74fed702247e0664c100e
BLAKE2b-256 a7c385289650c15c3f3dafc8c0541062aeb0df9f3a120a4d034f705fb36f6152

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page