iplotx 0.6.1__tar.gz → 0.6.3__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-0.6.1 → iplotx-0.6.3}/.github/workflows/test.yml +2 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/PKG-INFO +4 -4
- {iplotx-0.6.1 → iplotx-0.6.3}/README.md +2 -2
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/__init__.py +1 -1
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/utils/geometry.py +9 -8
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/version.py +1 -1
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/vertex.py +3 -1
- {iplotx-0.6.1 → iplotx-0.6.3}/pyproject.toml +1 -1
- iplotx-0.6.3/tests/baseline_images/test_igraph/graph_vertexsize.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_geometry.py +36 -2
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_igraph.py +13 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/.github/workflows/publish.yml +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/.gitignore +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/.pre-commit-config.yaml +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/.readthedocs.yaml +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/LICENSE +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/MANIFEST.in +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/assets/pylint.svg +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/Makefile +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/make.bat +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/_static/banner.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/_static/graph_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/_templates/layout.html +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/api/artists.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/api/complete_style_specification.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/api/plotting.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/api/providers.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/api/style.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/api.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/conf.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/images/sphx_glr_plot_basic_001.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/images/thumb/sphx_glr_plot_basic_thumb.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/index.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/providers.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/sg_execution_times.rst +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/docs/source/style.md +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/GALLERY_HEADER.rst +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/data/chess_masters_WCC.pgn.bz2 +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/data/knuth_miles.txt.gz +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_animation.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_arrowlawn.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_arrows.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_basic.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_big_curves.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_chess_masters.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_cliques.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_cluster_layout.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_company_structure.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_complex.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_dag.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_directed.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_edgepadding.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_edit_artists.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_elements.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_feedbacks.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_four_grids.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_grouping.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_halfarrows.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_house.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_knuth_miles.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_labels_and_colors.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_loops.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_max_bipartite_matching.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_minimum_spanning_trees.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_mouse_hover.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_multipartite_layout.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_multistyle.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_parallel_igraph_networkx.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_ports.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_redblack.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_shortest_path.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_simple_networkx.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_simple_path.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_simplenetworkdataprovider.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_style.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_tension.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_traveling_salesman.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_vertexmarkers.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_voronoi.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_waypoints.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/plot_with_colorbar.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/GALLERY_HEADER.rst +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/data/tree-with-support.json +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_angular_waypoints.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_biopython_tree.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_cladeedges.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_cogent3_layouts.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_cogent3_tree.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_elements_tree.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_ete4.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_leafedges.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_leafedges_and_cascades.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_simpletreedataprovider.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_skbio_tree.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_split_edges.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_style_tree.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_support.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_tree_node_background.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_tree_style_clades.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/gallery/tree/plot_trees_of_trees.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/__init__.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/artists.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/cascades.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/edge/__init__.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/edge/arrow.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/edge/geometry.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/edge/leaf.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/edge/ports.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/groups.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/heuristics.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/network/igraph.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/network/networkx.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/network/simple.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/tree/biopython.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/tree/cogent3.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/tree/ete4.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/tree/simple.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/providers/tree/skbio.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/ingest/typing.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/label.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/layout.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/network.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/plotting.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/style/__init__.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/style/leaf_info.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/style/library.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/tree.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/typing.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/utils/internal.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/utils/matplotlib.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/iplotx/utils/style.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/scripts/copy_github_release_into_version.sh +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/scripts/make_banner.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/scripts/update_pylint_badge.sh +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/cascades.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/directed_child.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/leaf_labels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/leaf_labels_hmargin.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/leafedges.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/show_support.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/tree_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_biopython/tree_radial.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/leaf_labels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/leaf_labels_hmargin.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/tree_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_cogent3/tree_radial.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_ete4/leaf_labels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_ete4/leaf_labels_hmargin.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_ete4/split_edges.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_ete4/tree_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_ete4/tree_radial.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/clustering_directed.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/clustering_directed_large.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_directed.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_directed_curved_loops.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_edit_children.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_labels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_layout_attribute.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_null.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_squares_directed.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_with_curved_edges.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/igraph_layout_object.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/multigraph_with_curved_edges_undirected.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/cluster-layout.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/complex.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/complex_rotatelabels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/directed_graph.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/directed_graph_with_colorbar.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/empty_graph.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/flat_style.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/house_with_colors.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/labels_and_colors.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/shortest_path.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/simple_graph.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_directed.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_labels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_skbio/leaf_labels.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_skbio/leaf_labels_hmargin.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_skbio/tree_basic.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_skbio/tree_radial.png +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_arrows.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_biopython.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_cascades.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_cogent3.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_edge.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_edge_geometry.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_ete4.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_heuristics.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_ingest_protocols.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_matplotlib_utils.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_network_hotload.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_networkx.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_ports.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_simple_network_provider.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_simple_tree_provider.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_skbio.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_style.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/test_vertex.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/tests/utils.py +0 -0
- {iplotx-0.6.1 → iplotx-0.6.3}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iplotx
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.3
|
|
4
4
|
Summary: Plot networkx from igraph and networkx.
|
|
5
5
|
Project-URL: Homepage, https://github.com/fabilab/iplotx
|
|
6
6
|
Project-URL: Documentation, https://readthedocs.org/iplotx
|
|
@@ -11,7 +11,7 @@ Author-email: Fabio Zanini <fabio.zanini@unsw.edu.au>
|
|
|
11
11
|
Maintainer-email: Fabio Zanini <fabio.zanini@unsw.edu.au>
|
|
12
12
|
License: MIT
|
|
13
13
|
Keywords: graph,network,plotting,visualisation
|
|
14
|
-
Classifier: Development Status ::
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
16
16
|
Classifier: Intended Audience :: Education
|
|
17
17
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -41,6 +41,8 @@ Description-Content-Type: text/markdown
|
|
|
41
41
|

|
|
42
42
|
[](https://coveralls.io/github/fabilab/iplotx?branch=main)
|
|
43
43
|

|
|
44
|
+
[](https://doi.org/10.5281/zenodo.16599333)
|
|
45
|
+
|
|
44
46
|
|
|
45
47
|
# iplotx
|
|
46
48
|
[](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
|
|
@@ -61,8 +63,6 @@ Supports:
|
|
|
61
63
|
|
|
62
64
|
In addition to the above, *any* network or tree analysis library can register an [entry point](https://iplotx.readthedocs.io/en/latest/providers.html#creating-a-custom-data-provider) to gain compatibility with `iplotx` with no intervention from our side.
|
|
63
65
|
|
|
64
|
-
**NOTE**: This is currently late beta quality software. The API and functionality might break rarely.
|
|
65
|
-
|
|
66
66
|
## Installation
|
|
67
67
|
```bash
|
|
68
68
|
pip install iplotx
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|

|
|
4
4
|
[](https://coveralls.io/github/fabilab/iplotx?branch=main)
|
|
5
5
|

|
|
6
|
+
[](https://doi.org/10.5281/zenodo.16599333)
|
|
7
|
+
|
|
6
8
|
|
|
7
9
|
# iplotx
|
|
8
10
|
[](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
|
|
@@ -23,8 +25,6 @@ Supports:
|
|
|
23
25
|
|
|
24
26
|
In addition to the above, *any* network or tree analysis library can register an [entry point](https://iplotx.readthedocs.io/en/latest/providers.html#creating-a-custom-data-provider) to gain compatibility with `iplotx` with no intervention from our side.
|
|
25
27
|
|
|
26
|
-
**NOTE**: This is currently late beta quality software. The API and functionality might break rarely.
|
|
27
|
-
|
|
28
28
|
## Installation
|
|
29
29
|
```bash
|
|
30
30
|
pip install iplotx
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
This module focuses on how to ingest network data into standard data structures no matter what library they come from.
|
|
2
|
+
This module focuses on how to ingest network/tree data into standard data structures no matter what library they come from.
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import pathlib
|
|
@@ -42,14 +42,15 @@ def convex_hull(points):
|
|
|
42
42
|
pass
|
|
43
43
|
|
|
44
44
|
# Otherwise, try scipy
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
if hull_idx is None:
|
|
46
|
+
try:
|
|
47
|
+
from scipy.spatial import ConvexHull
|
|
48
|
+
|
|
49
|
+
# NOTE: scipy guarantees counterclockwise ordering in 2D
|
|
50
|
+
# https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html
|
|
51
|
+
hull_idx = ConvexHull(points).vertices[::-1]
|
|
52
|
+
except ImportError:
|
|
53
|
+
pass
|
|
53
54
|
|
|
54
55
|
# Last resort: our own Graham scan
|
|
55
56
|
if hull_idx is None:
|
|
@@ -232,10 +232,12 @@ class VertexCollection(PatchCollection):
|
|
|
232
232
|
else:
|
|
233
233
|
cmap_fun = None
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
size_tmp = style.get("size", 20)
|
|
236
|
+
if isinstance(size_tmp, str) and (size_tmp == "label"):
|
|
236
237
|
if self._labels is None:
|
|
237
238
|
warnings.warn("No labels found, cannot resize vertices based on labels.")
|
|
238
239
|
style["size"] = get_style("default.vertex")["size"]
|
|
240
|
+
del size_tmp
|
|
239
241
|
|
|
240
242
|
if "cmap" in style:
|
|
241
243
|
colorarray = []
|
|
@@ -24,7 +24,7 @@ license = {text = "MIT"}
|
|
|
24
24
|
license-files = ["LICEN[CS]E.*"]
|
|
25
25
|
keywords = ["network", "graph", "visualisation", "plotting"]
|
|
26
26
|
classifiers = [
|
|
27
|
-
"Development Status ::
|
|
27
|
+
"Development Status :: 5 - Production/Stable",
|
|
28
28
|
"Programming Language :: Python :: 3",
|
|
29
29
|
"Programming Language :: Python :: 3.11",
|
|
30
30
|
"Programming Language :: Python :: 3.12",
|
|
Binary file
|
|
@@ -28,6 +28,40 @@ def four_points():
|
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
# 13: two tests fail with AssertionError
|
|
32
|
+
def assert_array_equal_upon_cycling(points1, points2):
|
|
33
|
+
"""Determine array equality but allow order to be different by cycling.
|
|
34
|
+
|
|
35
|
+
Parameters:
|
|
36
|
+
points1: First array of points.
|
|
37
|
+
points2: Second array of points.
|
|
38
|
+
Returns:
|
|
39
|
+
True if the arrays are equal upon cycling, False otherwise.
|
|
40
|
+
"""
|
|
41
|
+
if len(points1) != len(points2):
|
|
42
|
+
return False
|
|
43
|
+
|
|
44
|
+
points1 = np.asarray(points1)
|
|
45
|
+
points2 = np.asarray(points2).astype(points1.dtype)
|
|
46
|
+
|
|
47
|
+
if (points1.ndim != 1) or (points2.ndim != 1):
|
|
48
|
+
raise ValueError("Only 1D arrays are supported.")
|
|
49
|
+
|
|
50
|
+
if (points1 == points2).all():
|
|
51
|
+
return True
|
|
52
|
+
|
|
53
|
+
# Cycle
|
|
54
|
+
points2 = np.concatenate([points2, points2])
|
|
55
|
+
i0 = np.flatnonzero((points2 == points1[0]))
|
|
56
|
+
if len(i0) != 2:
|
|
57
|
+
return False
|
|
58
|
+
i0 = i0[0]
|
|
59
|
+
points2 = points2[i0 : i0 + len(points1)]
|
|
60
|
+
|
|
61
|
+
# Check again
|
|
62
|
+
return bool((points1 == points2).all())
|
|
63
|
+
|
|
64
|
+
|
|
31
65
|
def test_squared_bezier(three_points):
|
|
32
66
|
ev = partial(geometry._evaluate_squared_bezier, three_points)
|
|
33
67
|
np.testing.assert_array_almost_equal(ev(0), three_points[0])
|
|
@@ -65,12 +99,12 @@ def test_hull_two(three_points):
|
|
|
65
99
|
|
|
66
100
|
def test_hull_three(three_points):
|
|
67
101
|
hull = geometry.convex_hull(three_points)
|
|
68
|
-
|
|
102
|
+
assert_array_equal_upon_cycling(hull, [2, 1, 0])
|
|
69
103
|
|
|
70
104
|
|
|
71
105
|
def test_hull_four(four_points):
|
|
72
106
|
hull = geometry.convex_hull(four_points)
|
|
73
|
-
|
|
107
|
+
assert_array_equal_upon_cycling(hull, [3, 2, 1, 0])
|
|
74
108
|
|
|
75
109
|
|
|
76
110
|
def test_hull_internal_three(three_points):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import unittest
|
|
2
|
+
import numpy as np
|
|
2
3
|
import importlib
|
|
3
4
|
import matplotlib as mpl
|
|
4
5
|
|
|
@@ -38,6 +39,18 @@ class GraphTestRunner(unittest.TestCase):
|
|
|
38
39
|
fig, ax = plt.subplots(figsize=(3, 3))
|
|
39
40
|
ipx.plot(g, ax=ax, layout=self.layout_small_ring)
|
|
40
41
|
|
|
42
|
+
@image_comparison(baseline_images=["graph_vertexsize"], remove_text=True)
|
|
43
|
+
def test_vertexsize(self):
|
|
44
|
+
g = ig.Graph.Ring(5)
|
|
45
|
+
fig, ax = plt.subplots(figsize=(3, 3))
|
|
46
|
+
ipx.plot(
|
|
47
|
+
g,
|
|
48
|
+
ax=ax,
|
|
49
|
+
layout=self.layout_small_ring,
|
|
50
|
+
vertex_size=np.linspace(10, 30, 5),
|
|
51
|
+
margins=0.15,
|
|
52
|
+
)
|
|
53
|
+
|
|
41
54
|
@image_comparison(baseline_images=["graph_labels"], remove_text=True)
|
|
42
55
|
def test_labels(self):
|
|
43
56
|
g = ig.Graph.Ring(5)
|
|
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
|
|
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
|
{iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/clustering_directed_large.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_igraph/graph_directed_curved_loops.png
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
|
{iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_networkx/directed_graph_with_colorbar.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_basic.png
RENAMED
|
File without changes
|
{iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_directed.png
RENAMED
|
File without changes
|
{iplotx-0.6.1 → iplotx-0.6.3}/tests/baseline_images/test_simple_network_provider/graph_labels.png
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
|