Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions doc/examples_sphinx-gallery/plot_iplotx.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
"""
.. _tutorials-iplotx:

==============================
Visualising graphs with iplotx
==============================
``iplotx`` (https://iplotx.readthedocs.io) is a library for visualisation of graphs/networks
with direct compatibility with both igraph and NetworkX. It uses ``matplotlib`` behind the
scenes so the results are compatible with the current igraph matplotlib backend and many
additional chart types (e.g. bar charts, annotations).

Compared to the standard visualisations shipped with igraph, ``iplotx`` offers:

- More styling options
- More consistent behaviour across DPI resolutions and backends
- More consistent matplotlib artists for plot editing and animation

"""

import igraph as ig
import iplotx as ipx

# Construct a graph with 5 vertices
n_vertices = 5
edges = [(0, 1), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (3, 4)]
g = ig.Graph(n_vertices, edges)

# Set attributes for the graph, nodes, and edges
g["title"] = "Small Social Network"
g.vs["name"] = [
"Daniel Morillas",
"Kathy Archer",
"Kyle Ding",
"Joshua Walton",
"Jana Hoyer",
]
g.vs["gender"] = ["M", "F", "F", "M", "F"]
g.es["married"] = [False, False, False, False, False, False, False, True]

# Set individual attributes
g.vs[1]["name"] = "Kathy Morillas"
g.es[0]["married"] = True

# Plot using iplotx
ipx.network(
g,
layout="circle", # print nodes in a circular layout
vertex_marker="s",
vertex_size=45,
vertex_linewidth=2,
vertex_facecolor=[
"lightblue" if gender == "M" else "deeppink" for gender in g.vs["gender"]
],
vertex_label_color=[
"black" if gender == "M" else "white" for gender in g.vs["gender"]
],
vertex_edgecolor="black",
vertex_labels=[name.replace(" ", "\n") for name in g.vs["name"]],
edge_linewidth=[2 if married else 1 for married in g.es["married"]],
edge_color=["#7142cf" if married else "#AAA" for married in g.es["married"]],
edge_padding=3,
aspect=1.0,
)
1 change: 1 addition & 0 deletions doc/source/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ sphinx==7.4.7
sphinx-gallery>=0.14.0
sphinx-rtd-theme>=1.3.0
pydoctor>=23.4.0
iplotx>=0.6.8

numpy
scipy
Expand Down
Loading