Adds a weighted line object to use with network graph diagrams.
Project description
Manim Weighted Line
A plugin for creating weighted network graphs in Manim
Table of contents:
Installation.
You can install via pip:
pip install manim-weighted-line
You can also clone the repo and install it from here:
git clone https://github.com/mutable-learning/manim-weighted-line.git
cd manim-weighted-line
python -m pip install .
or
git clone https://github.com/mutable-learning/manim-weighted-line.git
cd manim-weighted-line
python -m pip install -e .
What does Manim-Weighted-Line do?
This is a simple plugin that is designed to meet the needs of manim users who want to create weighted network graphs in Manim. There is no easy way to add weightings to the edges of graphs in Manim, so this plugin provides a simple solution for both undirected and directed graphs.
How do I use Manim-Weighted-Line?
After installing the plugin, you can start using it by running:
from manim import *
from manim_weighted_line import *
for example
from manim import *
from manim_weighted_line import *
class SimpleExample(Scene):
def construct(self):
weighted_line = WeightedLine(
0,
1,
weight=4,
)
self.add(weighted_line)
and we get
To use this line in your graphs, pass the configuration to the edge object and use the WeightedLine as the edge_type.
from manim import *
from manim_weighted_line import *
class WeightedGraph(Scene):
def construct(self):
vertices = [1, 2, 3, 4, 5, 6, 7, 8]
edges = [(1, 7), (1, 8), (2, 3), (2, 4), (2, 5),
(2, 8), (3, 4), (6, 1), (6, 2),
(6, 3), (7, 2), (7, 4)]
g = DiGraph(vertices, edges, layout="circular", layout_scale=3,
labels=True, vertex_config={7: {"fill_color": RED}},
edge_type=WeightedLine,
edge_config={(1, 7): {"stroke_color": RED, 'weight': 2},
(7, 2): {"stroke_color": RED, 'weight': 0},
(7, 4): {"stroke_color": RED, 'weight': 5}})
self.add(g)
and we get
If you are using NetworkX to create your graph, you can use the WeightedLine as the edge_type and pass it config options in the edge_config dictionary:
from manim import *
from manim_weighted_line import *
import networkx as nx
class NetworkXGraph(Scene):
def construct(self):
G = nx.Graph()
G.add_nodes_from([1, 2, 3, 4, 5, 6, 7, 8])
G.add_weighted_edges_from([(1, 7, 2), (1, 8, 3), (2, 3, 4), (2, 4, 5), (2, 5, 6),
(2, 8, 1), (3, 4, 5), (6, 1, 0), (6, 2, 11),
(6, 3, 15), (7, 2, 3), (7, 4, 9)])
g = Graph(G.nodes, G.edges, layout="circular", layout_scale=3,
labels=True, vertex_config={7: {"fill_color": RED}},
edge_type=WeightedLine,
edge_config= {(u, v): G.get_edge_data(u, v) for u, v in G.edges},
)
self.add(g)
and we get
Take a look at the examples
Inside the examples folder, you can find some examples of how to use the plugin with different types of graphs, both undirected and directed. You can see how to configure different options for the weight label and the background. Check them out!
How to contact
You can open issues and pull requests, but if you want to contact me directly you can go to:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file manim_weighted_line-0.1.0.tar.gz
.
File metadata
- Download URL: manim_weighted_line-0.1.0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.3 Linux/6.4.3-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a28e830a8e86579d91039ffff845bc82975b480b9198022dbf158183b58dc9b |
|
MD5 | 403b2a3d3482c83d641bd11781b5ff98 |
|
BLAKE2b-256 | 0a3b853e20c7754107b425b71572504f84b5c1c89d4e40621fa26efb55a8cf8f |
File details
Details for the file manim_weighted_line-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: manim_weighted_line-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.3 Linux/6.4.3-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e92305064540f9be95a5c4e9e127eb861a27f4079453d44a766b4c98140beec |
|
MD5 | a795134022c76cebc7371fe29e50659f |
|
BLAKE2b-256 | 0f5be1e35a00d0b181e732d9d8faad19ca514f255282d449e5771d47ee42356a |