Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite draw_hyperedges() #456

Merged
merged 30 commits into from
Oct 16, 2023
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b29d8f9
refact: initial rewrite of draw_hyperedges with collections
maximelucas Aug 22, 2023
4caf84a
updated parameter handling
maximelucas Aug 22, 2023
2fc3b07
attempt at handling color args
maximelucas Aug 22, 2023
c85c22b
fix: alpha
maximelucas Aug 24, 2023
bdf7a48
feature: finished functionality rewrite of drawing hyperedges. style:…
maximelucas Aug 24, 2023
2c05a58
tuto: new on drawing edges
maximelucas Aug 24, 2023
ff7b692
Merge branch 'main' into draw_edges
maximelucas Aug 24, 2023
7923adb
updated docstrings
maximelucas Aug 25, 2023
f8e9b06
fix: tests
maximelucas Aug 25, 2023
99dbfc2
fix: tests and compatbility with draw simplices
maximelucas Aug 25, 2023
349177d
fix: notebooks and order of nodes in lshift
maximelucas Aug 28, 2023
7047d49
added notebook on drawing edges
maximelucas Aug 29, 2023
5f20b0d
fix: impose zorder edges to be below dyads
maximelucas Oct 9, 2023
30d5c8a
reordered edges before plotting to ensure large ones are plotted firs…
maximelucas Oct 9, 2023
2e738e8
fix: import seaborn for cmap crest
maximelucas Oct 9, 2023
deb5d51
reran notebooks
maximelucas Oct 9, 2023
94cd36b
reran notebooks
maximelucas Oct 9, 2023
723d989
reran notebooks
maximelucas Oct 9, 2023
64f459b
Merge branch 'main' into draw_edges
maximelucas Oct 9, 2023
912a279
fix: added seaborn to default requirements
maximelucas Oct 9, 2023
27779d3
fix: updated draw_simplices to make it consistent with draw_hyperedges
maximelucas Oct 16, 2023
0e24377
doc: updated docstrings accordingly
maximelucas Oct 16, 2023
ee380a9
style: black and isort
maximelucas Oct 16, 2023
c3e6c1d
fix: tests
maximelucas Oct 16, 2023
29df5a3
tests: more for draw_hyperedges
maximelucas Oct 16, 2023
6d0a229
style: black
maximelucas Oct 16, 2023
c8b17ad
reran plotting notebooks
maximelucas Oct 16, 2023
172ea73
Fix
nwlandry Oct 16, 2023
f6201dc
merge
maximelucas Oct 16, 2023
4e51373
Merge branch 'draw_edges' of github.com:ComplexGroupInteractions/xgi …
maximelucas Oct 16, 2023
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
23 changes: 16 additions & 7 deletions tests/drawing/test_draw.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,18 @@ def test_draw(edgelist8):
H = xgi.Hypergraph(edgelist8)

fig, ax = plt.subplots()
ax, node_collection = xgi.draw(H, ax=ax)
ax, collections = xgi.draw(H, ax=ax)

(node_collection, dyad_collection, edge_collection) = collections

# number of elements
assert len(ax.lines) == len(H.edges.filterby("size", 2)) # dyads
assert len(ax.patches) == len(H.edges.filterby("size", 2, mode="gt")) # hyperedges
assert len(ax.lines) == 0
assert len(ax.patches) == 0
offsets = node_collection.get_offsets()
assert offsets.shape[0] == H.num_nodes # nodes
assert len(ax.collections) == 3
assert len(dyad_collection.get_paths()) == 3 # dyads
assert len(edge_collection.get_paths()) == 6 # other hyperedges

# zorder
for line in ax.lines: # dyads
Expand Down Expand Up @@ -198,12 +203,16 @@ def test_draw_hyperedges(edgelist8):
H = xgi.Hypergraph(edgelist8)

fig, ax = plt.subplots()
ax = xgi.draw_hyperedges(H, ax=ax)
ax, collections = xgi.draw_hyperedges(H, ax=ax)

(dyad_collection, edge_collection) = collections

# number of elements
assert len(ax.lines) == len(H.edges.filterby("size", 2)) # dyads
assert len(ax.patches) == len(H.edges.filterby("size", 2, mode="gt")) # hyperedges
assert len(ax.collections) == 0 # nodes
assert len(ax.lines) == 0
assert len(ax.patches) == 0
assert len(ax.collections) == 2
assert len(dyad_collection.get_paths()) == 3 # dyads
assert len(edge_collection.get_paths()) == 6 # other hyperedges

# zorder
for line in ax.lines: # dyads
Expand Down
41 changes: 19 additions & 22 deletions tutorials/In Depth 1 - Drawing nodes.ipynb

Large diffs are not rendered by default.

111 changes: 78 additions & 33 deletions tutorials/Tutorial 5 - Plotting.ipynb

Large diffs are not rendered by default.

98 changes: 58 additions & 40 deletions tutorials/quickstart.ipynb

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions xgi/core/hypergraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,12 +273,13 @@ def __lshift__(self, H2):
[{1, 2}, {2, 3}, {1, 3, 4}]
"""
tempH = Hypergraph()
tempH.add_edges_from(zip(self._edge.values(), self._edge_attr.values()))

tempH.add_nodes_from(zip(self._node.keys(), self._node_attr.values()))

tempH.add_edges_from(zip(H2._edge.values(), H2._edge_attr.values()))
tempH.add_nodes_from(zip(H2._node.keys(), H2._node_attr.values()))

tempH.add_edges_from(zip(self._edge.values(), self._edge_attr.values()))
tempH.add_edges_from(zip(H2._edge.values(), H2._edge_attr.values()))

tempH._hypergraph = deepcopy(self._hypergraph)
tempH._hypergraph.update(deepcopy(H2._hypergraph))

Expand Down
Loading