iplotx 1.4.0__tar.gz → 1.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {iplotx-1.4.0 → iplotx-1.4.1}/PKG-INFO +1 -1
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/installing.md +9 -31
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/sg_execution_times.rst +6 -3
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_arcs.py +10 -5
- iplotx-1.4.1/gallery/style/plot_edge_geometries.py +61 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/edge/__init__.py +1 -1
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/version.py +1 -1
- iplotx-1.4.1/tests/baseline_images/test_igraph/directed_arcs.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_igraph.py +15 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/.github/workflows/publish.yml +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/.github/workflows/test.yml +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/.gitignore +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/.pre-commit-config.yaml +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/.readthedocs.yaml +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/LICENSE +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/MANIFEST.in +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/README.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/assets/pylint.svg +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/Makefile +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/make.bat +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/_static/banner.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/_static/custom-icons.js +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/_static/custom.css +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/_static/graph_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/_templates/layout.html +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/api/artists.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/api/complete_style_specification.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/api/plotting.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/api/providers.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/api/style.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/api.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/code_of_conduct.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/conf.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/images/sphx_glr_plot_basic_001.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/images/thumb/sphx_glr_plot_basic_thumb.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/index.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/providers.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/docs/source/style.md +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_3d.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_basic.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_big_curves.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_dag.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_directed.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_grouping.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_house.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_loops.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/basic/plot_simple_path.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/80201010000000001.mst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/GN-tree.json +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/breast_cancer_string_interactions_short.tsv +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/breast_cancer_string_network_coordinates.tsv +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/cell_cycle_arrest_string_interactions_short.tsv +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/cell_cycle_arrest_string_network_coordinates.tsv +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/fevo-08-588430_DataSheet1_S1.csv +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_animal_phylogeny.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_antibody_clone.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_breast_cancer_ppi.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_cell_cycle_arrest.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_food_network.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_foraging_table.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_pollinators.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_ppi.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/plot_tca_cycle.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/data/chess_masters_WCC.pgn.bz2 +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/data/knuth_miles.txt.gz +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_arrowlawn.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_chess_masters.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_cliques.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_cluster_layout.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_company_structure.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_complex.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_financial_network.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_knuth_miles.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_labels_and_colors.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_max_bipartite_matching.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_minimum_spanning_trees.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_multipartite_layout.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_parallel_igraph_networkx.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_redblack.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_shortest_path.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_simple_networkx.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_social_network_circles.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_traveling_salesman.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/network_science/plot_with_colorbar.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/plot_animation.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/plot_edit_artists.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/plot_feedbacks.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/plot_graph.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/plot_mouse_hover.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/other/plot_train.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_arrows.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_depthshade.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_edgepadding.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_elements.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_four_grids.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_halfarrows.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_multistyle.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_ports.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_style.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_tension.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_vertexmarkers.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_voronoi.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/style/plot_waypoints.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/data/tree-with-support.json +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_angular_waypoints.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_biopython_tree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_cladeedges.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_cogent3_layouts.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_cogent3_tree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_dendropy.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_double_tree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_elements_tree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_equalangle.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_ete4.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_leafedges.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_leafedges_and_cascades.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_scalebar.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_skbio_tree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_split_edges.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_style_tree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_support.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_tree_node_background.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_tree_style_clades.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/tree/plot_trees_of_trees.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/zero_dependency/GALLERY_HEADER.rst +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/zero_dependency/plot_simplenetworkdataprovider.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/gallery/zero_dependency/plot_simpletreedataprovider.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/art3d/edge/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/art3d/edge/arrow.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/art3d/edge/geometry.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/art3d/vertex.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/artists.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/edge/arrow.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/edge/geometry.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/edge/leaf.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/edge/ports.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/heuristics.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/network/graph_tool.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/network/igraph.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/network/networkx.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/network/simple.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/tree/biopython.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/tree/cogent3.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/tree/dendropy.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/tree/ete4.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/tree/simple.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/providers/tree/skbio.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/ingest/typing.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/label.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/layout/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/layout/tree/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/layout/tree/rooted.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/layout/tree/unrooted.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/network/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/network/groups.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/plotting.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/style/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/style/leaf_info.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/style/library.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/tree/__init__.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/tree/cascades.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/tree/scalebar.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/typing.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/utils/geometry.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/utils/internal.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/utils/matplotlib.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/utils/style.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/iplotx/vertex.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/pyproject.toml +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/scripts/copy_github_release_into_version.sh +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/scripts/make_banner.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/scripts/update_pylint_badge.sh +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/cascades.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/directed_child.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/leaf_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/leaf_labels_hmargin.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/leafedges.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/show_support.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/tree_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_biopython/tree_radial.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_cogent3/leaf_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_cogent3/leaf_labels_hmargin.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_cogent3/tree_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_cogent3/tree_radial.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/cascades.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/directed_child.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/leaf_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/leaf_labels_hmargin.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/leafedges.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/tree_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_dendropy/tree_radial.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_doubletree/tree_gap.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_doubletree/tree_nogap.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_ete4/equalangle_layout.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_ete4/leaf_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_ete4/leaf_labels_hmargin.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_ete4/split_edges.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_ete4/tree_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_ete4/tree_radial.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_graph_tool/graph_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_graph_tool/graph_directed.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/arcs.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/clustering_directed.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/clustering_directed_large.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_directed.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_directed_curved_loops.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_edit_children.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_layout_attribute.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_null.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_squares_directed.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_vertexsize.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/graph_with_curved_edges.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/igraph_layout_object.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/large_arcs.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph/multigraph_with_curved_edges_undirected.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph_3d/directed.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph_3d/undirected.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_igraph_3d/vertex_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/cluster-layout.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/complex.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/complex_rotatelabels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/directed_graph.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/directed_graph_with_colorbar.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/empty_graph.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/flat_style.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/house_with_colors.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/labels_and_colors.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/shortest_path.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_networkx/simple_graph.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_simple_network_provider/graph_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_simple_network_provider/graph_directed.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_simple_network_provider/graph_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_skbio/leaf_labels.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_skbio/leaf_labels_hmargin.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_skbio/tree_basic.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/baseline_images/test_skbio/tree_radial.png +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_arrows.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_biopython.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_cascades.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_cogent3.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_dendropy.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_doubletree.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_edge.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_edge_geometry.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_ete4.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_geometry.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_graph_tool.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_heuristics.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_igraph_3d.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_ingest_protocols.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_matplotlib_utils.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_network_hotload.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_networkx.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_ports.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_simple_network_provider.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_simple_tree_provider.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_skbio.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_style.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/test_vertex.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/tests/utils.py +0 -0
- {iplotx-1.4.0 → iplotx-1.4.1}/uv.lock +0 -0
|
@@ -11,13 +11,11 @@ pip install iplotx
|
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
import igraph as ig
|
|
14
|
-
import matplotlib.pyplot as plt
|
|
15
14
|
import iplotx as ipx
|
|
16
15
|
|
|
17
16
|
g = ig.Graph.Ring(5)
|
|
18
17
|
layout = g.layout("circle").coords
|
|
19
|
-
|
|
20
|
-
ipx.plot(g, ax=ax, layout=layout)
|
|
18
|
+
ipx.network(g, layout)
|
|
21
19
|
```
|
|
22
20
|
|
|
23
21
|
|
|
@@ -27,13 +25,11 @@ ipx.plot(g, ax=ax, layout=layout)
|
|
|
27
25
|
:::{tab-item} networkx
|
|
28
26
|
```
|
|
29
27
|
import networkx as nx
|
|
30
|
-
import matplotlib.pyplot as plt
|
|
31
28
|
import iplotx as ipx
|
|
32
29
|
|
|
33
30
|
g = nx.Graph([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)])
|
|
34
31
|
layout = nx.layout.circular_layout(g)
|
|
35
|
-
|
|
36
|
-
ipx.plot(g, ax=ax, layout=layout)
|
|
32
|
+
ipx.network(g, layout)
|
|
37
33
|
```
|
|
38
34
|
|
|
39
35
|
:::
|
|
@@ -44,9 +40,6 @@ Either way, the result is the same:
|
|
|
44
40
|
|
|
45
41
|

|
|
46
42
|
|
|
47
|
-
## Gallery
|
|
48
|
-
See <project:gallery/index.rst> for examples of plots made with `iplotx`. Feel free to suggest new examples on GitHub by opening a new issue or pull request!
|
|
49
|
-
|
|
50
43
|
## Features
|
|
51
44
|
`iplotx`'s features' include:
|
|
52
45
|
- per-edge and per-vertex styling using sequences or dictionaries
|
|
@@ -72,32 +65,17 @@ See <project:gallery/index.rst> for examples of plots made with `iplotx`. Feel f
|
|
|
72
65
|
- animations (see <project:gallery/other/plot_animation.rst>)
|
|
73
66
|
- 3D visualisations
|
|
74
67
|
- mouse/keyboard interaction and events (e.g. hover, click, see <project:gallery/other/plot_mouse_hover.rst>)
|
|
75
|
-
- ... and
|
|
68
|
+
- ... and many more.
|
|
76
69
|
|
|
77
|
-
##
|
|
78
|
-
|
|
70
|
+
## Rationale
|
|
71
|
+
We believe graph **analysis**, graph **layouting**, and graph **visualisation** to be three separate tasks. `iplotx` currently focuses on visualisation. It can also compute simple tree layouts and might expand towards network layouts in the future.
|
|
79
72
|
|
|
80
|
-
|
|
73
|
+
## Citation
|
|
74
|
+
If you use `iplotx` for publication figures, please cite the [zenodo preprint](https://doi.org/10.5281/zenodo.16599333):
|
|
81
75
|
|
|
82
|
-
```python
|
|
83
|
-
import iplotx as ipx
|
|
84
|
-
with ipx.style.context({
|
|
85
|
-
'vertex': {
|
|
86
|
-
'size': 30,
|
|
87
|
-
'facecolor': 'red',
|
|
88
|
-
'edgecolor': 'none',
|
|
89
|
-
}
|
|
90
|
-
}):
|
|
91
|
-
ipx.plot(...)
|
|
92
76
|
```
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
## Reference API
|
|
97
|
-
See <project:api.md> for reference documentation of all functions and classes in `iplotx`.
|
|
98
|
-
|
|
99
|
-
## Rationale
|
|
100
|
-
We believe graph **analysis**, graph **layouting**, and graph **visualisation** to be three separate tasks. `iplotx` currently focuses on visualisation. It can also compute simple tree layouts and might expand towards network layouts in the future.
|
|
77
|
+
F. Zanini. (2025). Unified network visualisation in Python. Zenodo [PREPRINT]. https://doi.org/10.5281/zenodo.16599333
|
|
78
|
+
```
|
|
101
79
|
|
|
102
80
|
## Contributing
|
|
103
81
|
Open an [issue on GitHub](https://github.com/fabilab/iplotx/issues) to request features, report bugs, or show intention in contributing. Pull requests are very welcome.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
Computation times
|
|
8
8
|
=================
|
|
9
|
-
**00:00.
|
|
9
|
+
**00:00.158** total execution time for 80 files **from all galleries**:
|
|
10
10
|
|
|
11
11
|
.. container::
|
|
12
12
|
|
|
@@ -32,12 +32,15 @@ Computation times
|
|
|
32
32
|
* - Example
|
|
33
33
|
- Time
|
|
34
34
|
- Mem (MB)
|
|
35
|
-
* - :ref:`
|
|
36
|
-
- 00:00.
|
|
35
|
+
* - :ref:`sphx_glr_gallery_style_plot_edge_geometries.py` (``../../gallery/style/plot_edge_geometries.py``)
|
|
36
|
+
- 00:00.158
|
|
37
37
|
- 0.0
|
|
38
38
|
* - :ref:`sphx_glr_gallery_basic_plot_3d.py` (``../../gallery/basic/plot_3d.py``)
|
|
39
39
|
- 00:00.000
|
|
40
40
|
- 0.0
|
|
41
|
+
* - :ref:`sphx_glr_gallery_basic_plot_arcs.py` (``../../gallery/basic/plot_arcs.py``)
|
|
42
|
+
- 00:00.000
|
|
43
|
+
- 0.0
|
|
41
44
|
* - :ref:`sphx_glr_gallery_basic_plot_basic.py` (``../../gallery/basic/plot_basic.py``)
|
|
42
45
|
- 00:00.000
|
|
43
46
|
- 0.0
|
|
@@ -23,11 +23,8 @@ ipx.plot(
|
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
# %%
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
# a straight line, a tension of 1 gives a semicircle, and higher tensions give increasingly larger arcs. A tension of
|
|
29
|
-
# infinity would give you a straight line away from the target vertex, but is not accepted by the library. Negative
|
|
30
|
-
# tensions result in arcs curving in the opposite direction.
|
|
26
|
+
#
|
|
27
|
+
# Other values of tension can be used to create different arc shapes:
|
|
31
28
|
|
|
32
29
|
fig, axs = plt.subplots(2, 2, figsize=(8, 8))
|
|
33
30
|
for tension, ax in zip([0.5, 2.5, -0.5, -2.5], axs.ravel()):
|
|
@@ -40,3 +37,11 @@ for tension, ax in zip([0.5, 2.5, -0.5, -2.5], axs.ravel()):
|
|
|
40
37
|
margins=0.15,
|
|
41
38
|
title=f"Edge tension = {tension:.2f}",
|
|
42
39
|
)
|
|
40
|
+
|
|
41
|
+
# %%
|
|
42
|
+
# .. tip::
|
|
43
|
+
# Tension is defined as the tangent of the quarter of the angle spanned by the arc. A tension of 0 gives
|
|
44
|
+
# a straight line, a tension of 1 gives a semicircle, and higher tensions give increasingly larger arcs. A tension of
|
|
45
|
+
# infinity would give you a straight line away from the target vertex, but is not accepted by the library. Negative
|
|
46
|
+
# tensions result in arcs curving in the opposite direction.
|
|
47
|
+
#
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Edge geometries
|
|
3
|
+
===============
|
|
4
|
+
|
|
5
|
+
This example shows how to use edge geometries and tension to achieve different visualisation styles.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
import igraph as ig
|
|
10
|
+
import matplotlib.pyplot as plt
|
|
11
|
+
import iplotx as ipx
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
g = ig.Graph.Full(2)
|
|
15
|
+
layout = [[0, 0], [1, 0]]
|
|
16
|
+
|
|
17
|
+
fig, axs = plt.subplots(3, 3, figsize=(6, 6), sharex=True, sharey=True)
|
|
18
|
+
tensions = [
|
|
19
|
+
[1, 5, 10],
|
|
20
|
+
[0.2, 1, 2],
|
|
21
|
+
]
|
|
22
|
+
for edge_arc, axrow, tensionrow in zip([False, True], axs, tensions):
|
|
23
|
+
kwargs = {}
|
|
24
|
+
if not edge_arc:
|
|
25
|
+
kwargs["edge_curved"] = True
|
|
26
|
+
for tension, ax in zip(tensionrow, axrow):
|
|
27
|
+
ipx.plot(
|
|
28
|
+
g,
|
|
29
|
+
layout=layout,
|
|
30
|
+
ax=ax,
|
|
31
|
+
edge_arc=edge_arc,
|
|
32
|
+
edge_tension=tension,
|
|
33
|
+
title=f"Tension {tension:.1f}",
|
|
34
|
+
node_size=10,
|
|
35
|
+
**kwargs,
|
|
36
|
+
)
|
|
37
|
+
axs[0, 0].set_ylabel("Bezier", fontsize=12)
|
|
38
|
+
axs[1, 0].set_ylabel("Arc", fontsize=12)
|
|
39
|
+
ipx.plot(
|
|
40
|
+
g,
|
|
41
|
+
layout,
|
|
42
|
+
ax=axs[2, 0],
|
|
43
|
+
node_size=10,
|
|
44
|
+
)
|
|
45
|
+
axs[2, 0].set_ylabel("Straight", fontsize=12)
|
|
46
|
+
ipx.plot(
|
|
47
|
+
g,
|
|
48
|
+
layout,
|
|
49
|
+
ax=axs[2, 1],
|
|
50
|
+
node_size=10,
|
|
51
|
+
edge_waypoints=[[0.5, -0.15]],
|
|
52
|
+
)
|
|
53
|
+
ipx.plot(
|
|
54
|
+
g,
|
|
55
|
+
layout,
|
|
56
|
+
ax=axs[2, 2],
|
|
57
|
+
node_size=10,
|
|
58
|
+
edge_waypoints=[[[0.25, -0.15], [0.75, -0.15]]],
|
|
59
|
+
)
|
|
60
|
+
axs[2, 1].set_ylabel("Waypoints", fontsize=12)
|
|
61
|
+
fig.tight_layout()
|
|
@@ -453,7 +453,7 @@ class EdgeCollection(mpl.collections.PatchCollection):
|
|
|
453
453
|
# If none found, empty the dictionary already
|
|
454
454
|
if (len(parallel_edges) == 0) or (max(parallel_edges.values(), key=len) == 1):
|
|
455
455
|
parallel_edges = {}
|
|
456
|
-
if not self._style.get("curved", False):
|
|
456
|
+
if (not self._style.get("curved", False)) and (not self._style.get("arc", False)):
|
|
457
457
|
while len(parallel_edges) > 0:
|
|
458
458
|
(v1, v2), indices = parallel_edges.popitem()
|
|
459
459
|
indices_inv = parallel_edges.pop((v2, v1), [])
|
|
Binary file
|
|
@@ -233,6 +233,21 @@ class GraphTestRunner(unittest.TestCase):
|
|
|
233
233
|
margins=0.2,
|
|
234
234
|
)
|
|
235
235
|
|
|
236
|
+
@image_comparison(baseline_images=["directed_arcs"])
|
|
237
|
+
def test_directed_arcs(self):
|
|
238
|
+
g = ig.Graph.Full(4, directed=True)
|
|
239
|
+
layout = [[0, 0], [1, 0], [2, 0], [3, 0]]
|
|
240
|
+
|
|
241
|
+
fig, ax = plt.subplots()
|
|
242
|
+
ipx.plot(
|
|
243
|
+
g,
|
|
244
|
+
layout=layout,
|
|
245
|
+
ax=ax,
|
|
246
|
+
edge_arc=True,
|
|
247
|
+
edge_tension=-3,
|
|
248
|
+
margins=0.2,
|
|
249
|
+
)
|
|
250
|
+
|
|
236
251
|
|
|
237
252
|
class ClusteringTestRunner(unittest.TestCase):
|
|
238
253
|
@property
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/breast_cancer_string_interactions_short.tsv
RENAMED
|
File without changes
|
{iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/breast_cancer_string_network_coordinates.tsv
RENAMED
|
File without changes
|
{iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/cell_cycle_arrest_string_interactions_short.tsv
RENAMED
|
File without changes
|
{iplotx-1.4.0 → iplotx-1.4.1}/gallery/biology/data/cell_cycle_arrest_string_network_coordinates.tsv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|