Metadata-Version: 2.5
Name: plexgraph
Version: 0.2.0
Summary: Interactive graph visualization for multilayer, temporal and hypergraph networks, in notebooks and the browser.
Project-URL: Homepage, https://github.com/instabaines/plexgraph
Project-URL: Documentation, https://github.com/instabaines/plexgraph/blob/master/docs/user-guide.md
Project-URL: Repository, https://github.com/instabaines/plexgraph
Project-URL: Issues, https://github.com/instabaines/plexgraph/issues
Project-URL: Changelog, https://github.com/instabaines/plexgraph/blob/master/CHANGELOG.md
Author: Ridwan Amure (Instabaines)
License-Expression: MIT
License-File: LICENSE
Keywords: graph,hypergraph,jupyter,multilayer,network,temporal network,visualization,webgl
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Jupyter
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: msgpack>=1.0
Requires-Dist: numpy>=1.26
Requires-Dist: websockets>=13.0
Provides-Extra: all
Requires-Dist: anywidget>=0.9; extra == 'all'
Requires-Dist: networkx>=3.0; extra == 'all'
Requires-Dist: pandas>=2.0; extra == 'all'
Provides-Extra: jupyter
Requires-Dist: anywidget>=0.9; extra == 'jupyter'
Provides-Extra: networkx
Requires-Dist: networkx>=3.0; extra == 'networkx'
Provides-Extra: pandas
Requires-Dist: pandas>=2.0; extra == 'pandas'
Description-Content-Type: text/markdown

# plexgraph

Interactive graph visualization for **multilayer**, **temporal** and **hypergraph** networks, from Python. Build a graph,
call `show()`, and explore it in a WebGL viewer, inline in Jupyter or in a browser tab. It stays responsive on graphs
with 100,000 nodes and hundreds of thousands of edges.

```sh
pip install plexgraph            # everything needed, including the viewer; no Node.js required
pip install "plexgraph[jupyter]" # plus the notebook widget (anywidget)
pip install "plexgraph[all]"     # plus pandas, networkx and the notebook widget
```

```python
import plexgraph as pg

g = pg.Graph()
for i in range(60):
    g.add_node(i, team=f"t{i % 3}")
for i in range(60):
    g.add_edge(i, (i + 1) % 60)
    g.add_edge(i, (i * 7 + 3) % 60)

view = pg.show(g, node_color=pg.by_attribute("team", palette="tab10"),
               node_size=pg.size_by_degree((8, 18)), edge_curvature=0.15, return_handle=True)

view.style(node_shape="s")               # change the open viewer from Python
view.color_nodes([0, 1, 2], "crimson")   # paint specific nodes
```

Try it without writing code: `python -m plexgraph demo`.

## What it does

- **Three kinds of network as first-class data**: layers (multiplex), time (contact sequences or intervals) and
  hyperedges, in one graph model.
- **Loaders** for edge lists, pandas DataFrames, networkx, GEXF and GraphML, and for temporal `u v t` files
  (`pg.read_temporal_edgelist`) with ISO dates, custom date formats or Unix timestamps.
- **A layout that scales**: streaming force layout with bounded memory, an overview that turns into individual nodes as
  you zoom, and communities that collapse and expand.
- **networkx-style styling, live**: colors, sizes, shapes, outlines, opacity, curved edges and labels, from attributes,
  degree, weights, time buckets or your own lists and dicts, changed while the viewer is open. The same controls are in
  the viewer's Appearance panel.
- **Exploration tools**: search, filters, click-to-select, shortest path, time slider and time ribbon, and export to
  PNG, JPG, SVG, HTML or PDF.

## Documentation

- [User guide](https://github.com/instabaines/plexgraph/blob/master/docs/user-guide.md)
- [Tour notebook](https://github.com/instabaines/plexgraph/blob/master/examples/notebooks/tour.ipynb) with a runnable
  example of every feature
- [Changelog](https://github.com/instabaines/plexgraph/blob/master/CHANGELOG.md)

## Notes

- The package is pure Python and the viewer is bundled, so there is nothing to compile or build.
- `import plexgraph` is the supported entry point. It is implemented by two packages installed alongside it,
  `plexgraph_core` (graph model and loaders) and `plexgraph_bridge` (viewer and styling). Do not install this next to the
  separate `plexgraph-core` or `plexgraph-bridge` development packages, which provide the same modules.
- Status: alpha. The API may change before 1.0.

MIT licensed.
