Skip to content

improve edge waypoints #10

@iosonofabio

Description

@iosonofabio

Edge waypoints work well on typical trees but are somewhat buggy when used with nonzero-size vertices, e.g.:

import networkx as nx
import matplotlib.pyplot as plt
import iplotx as ipx

g = nx.DiGraph(); g.add_edges_from([
    ('CEO', 'Manager 1'),
    ('CEO', 'Manager 2'),
    ('CEO', 'Manager 3'),
    ('Manager 1', 'Employee 1'),
    ('Manager 1', 'Employee 2'),
    ('Manager 2', 'Employee 3'),
    ('Manager 2', 'Employee 4'),
    ('Manager 3', 'Employee 4'),
])
layout = {
    'CEO': [0, 0],
    'Manager 1': [1, -1],
    'Manager 2': [1, 0],
    'Manager 3': [1, 1],
    'Employee 1': [2, -1],
    'Employee 2': [2, 0],
    'Employee 3': [2, 1],
    'Employee 4': [2, 2],
}
ipx.network(
    g,
    layout=layout,
    vertex_labels=True,
    style="hollow",
    vertex_marker='r',
    edge_ports=[("e", "w")] * 8,
    edge_waypoints="x0y1",
    #edge_curved=True,
    #edge_tension=[0.6] * 3 + [0.5] * 5,
    margins=(0.08, 0.05),
)
plt.ion(); plt.show()

Image

There are two things here:

  1. waypoints should be aware of vertices and ports
  2. we should add some kind of waypoint style "xmidy0,xmidy1" that makes an S/Z shape

Not urgent, but should not be that difficult either.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions