iplotx 0.5.0__tar.gz → 0.5.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.
Files changed (192) hide show
  1. {iplotx-0.5.0 → iplotx-0.5.1}/PKG-INFO +32 -15
  2. iplotx-0.5.1/README.md +69 -0
  3. iplotx-0.5.1/docs/source/_static/banner.png +0 -0
  4. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_cladeedges.py +2 -2
  5. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_tree_style_clades.py +2 -2
  6. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/edge/geometry.py +0 -2
  7. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/version.py +1 -1
  8. iplotx-0.5.1/scripts/make_banner.py +82 -0
  9. iplotx-0.5.0/README.md +0 -52
  10. {iplotx-0.5.0 → iplotx-0.5.1}/.github/workflows/publish.yml +0 -0
  11. {iplotx-0.5.0 → iplotx-0.5.1}/.github/workflows/test.yml +0 -0
  12. {iplotx-0.5.0 → iplotx-0.5.1}/.gitignore +0 -0
  13. {iplotx-0.5.0 → iplotx-0.5.1}/.pre-commit-config.yaml +0 -0
  14. {iplotx-0.5.0 → iplotx-0.5.1}/.readthedocs.yaml +0 -0
  15. {iplotx-0.5.0 → iplotx-0.5.1}/LICENSE +0 -0
  16. {iplotx-0.5.0 → iplotx-0.5.1}/MANIFEST.in +0 -0
  17. {iplotx-0.5.0 → iplotx-0.5.1}/assets/pylint.svg +0 -0
  18. {iplotx-0.5.0 → iplotx-0.5.1}/docs/Makefile +0 -0
  19. {iplotx-0.5.0 → iplotx-0.5.1}/docs/make.bat +0 -0
  20. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/_static/graph_basic.png +0 -0
  21. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/_templates/layout.html +0 -0
  22. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/api/artists.md +0 -0
  23. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/api/complete_style_specification.md +0 -0
  24. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/api/plotting.md +0 -0
  25. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/api/providers.md +0 -0
  26. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/api/style.md +0 -0
  27. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/api.md +0 -0
  28. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/conf.py +0 -0
  29. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/images/sphx_glr_plot_basic_001.png +0 -0
  30. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/images/thumb/sphx_glr_plot_basic_thumb.png +0 -0
  31. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/index.md +0 -0
  32. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/providers.md +0 -0
  33. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/sg_execution_times.rst +0 -0
  34. {iplotx-0.5.0 → iplotx-0.5.1}/docs/source/style.md +0 -0
  35. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/GALLERY_HEADER.rst +0 -0
  36. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/data/chess_masters_WCC.pgn.bz2 +0 -0
  37. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/data/knuth_miles.txt.gz +0 -0
  38. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_animation.py +0 -0
  39. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_arrows.py +0 -0
  40. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_basic.py +0 -0
  41. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_big_curves.py +0 -0
  42. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_chess_masters.py +0 -0
  43. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_cliques.py +0 -0
  44. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_cluster_layout.py +0 -0
  45. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_company_structure.py +0 -0
  46. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_complex.py +0 -0
  47. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_dag.py +0 -0
  48. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_directed.py +0 -0
  49. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_edit_artists.py +0 -0
  50. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_four_grids.py +0 -0
  51. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_grouping.py +0 -0
  52. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_halfarrows.py +0 -0
  53. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_house.py +0 -0
  54. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_knuth_miles.py +0 -0
  55. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_labels_and_colors.py +0 -0
  56. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_loops.py +0 -0
  57. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_max_bipartite_matching.py +0 -0
  58. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_minimum_spanning_trees.py +0 -0
  59. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_mouse_hover.py +0 -0
  60. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_multipartite_layout.py +0 -0
  61. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_multistyle.py +0 -0
  62. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_parallel_igraph_networkx.py +0 -0
  63. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_ports.py +0 -0
  64. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_shortest_path.py +0 -0
  65. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_simple_networkx.py +0 -0
  66. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_simple_path.py +0 -0
  67. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_simplenetworkdataprovider.py +0 -0
  68. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_style.py +0 -0
  69. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_tension.py +0 -0
  70. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_traveling_salesman.py +0 -0
  71. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_vertexmarkers.py +0 -0
  72. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_voronoi.py +0 -0
  73. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/plot_with_colorbar.py +0 -0
  74. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/GALLERY_HEADER.rst +0 -0
  75. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/data/tree-with-support.json +0 -0
  76. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_angular_waypoints.py +0 -0
  77. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_biopython_tree.py +0 -0
  78. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_cogent3_layouts.py +0 -0
  79. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_cogent3_tree.py +0 -0
  80. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_ete4.py +0 -0
  81. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_leafedges.py +0 -0
  82. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_leafedges_and_cascades.py +0 -0
  83. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_simpletreedataprovider.py +0 -0
  84. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_skbio_tree.py +0 -0
  85. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_split_edges.py +0 -0
  86. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_support.py +0 -0
  87. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_tree_node_background.py +0 -0
  88. {iplotx-0.5.0 → iplotx-0.5.1}/gallery/tree/plot_trees_of_trees.py +0 -0
  89. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/__init__.py +0 -0
  90. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/artists.py +0 -0
  91. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/cascades.py +0 -0
  92. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/edge/__init__.py +0 -0
  93. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/edge/arrow.py +0 -0
  94. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/edge/leaf.py +0 -0
  95. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/edge/ports.py +0 -0
  96. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/groups.py +0 -0
  97. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/__init__.py +0 -0
  98. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/heuristics.py +0 -0
  99. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/network/igraph.py +0 -0
  100. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/network/networkx.py +0 -0
  101. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/network/simple.py +0 -0
  102. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/tree/biopython.py +0 -0
  103. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/tree/cogent3.py +0 -0
  104. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/tree/ete4.py +0 -0
  105. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/tree/simple.py +0 -0
  106. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/providers/tree/skbio.py +0 -0
  107. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/ingest/typing.py +0 -0
  108. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/label.py +0 -0
  109. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/layout.py +0 -0
  110. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/network.py +0 -0
  111. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/plotting.py +0 -0
  112. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/style/__init__.py +0 -0
  113. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/style/leaf_info.py +0 -0
  114. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/style/library.py +0 -0
  115. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/tree.py +0 -0
  116. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/typing.py +0 -0
  117. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/utils/geometry.py +0 -0
  118. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/utils/internal.py +0 -0
  119. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/utils/matplotlib.py +0 -0
  120. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/utils/style.py +0 -0
  121. {iplotx-0.5.0 → iplotx-0.5.1}/iplotx/vertex.py +0 -0
  122. {iplotx-0.5.0 → iplotx-0.5.1}/pyproject.toml +0 -0
  123. {iplotx-0.5.0 → iplotx-0.5.1}/scripts/copy_github_release_into_version.sh +0 -0
  124. {iplotx-0.5.0 → iplotx-0.5.1}/scripts/update_pylint_badge.sh +0 -0
  125. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/cascades.png +0 -0
  126. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/leaf_labels.png +0 -0
  127. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/leaf_labels_hmargin.png +0 -0
  128. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/leafedges.png +0 -0
  129. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/show_support.png +0 -0
  130. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/tree_basic.png +0 -0
  131. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_biopython/tree_radial.png +0 -0
  132. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_cogent3/leaf_labels.png +0 -0
  133. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_cogent3/leaf_labels_hmargin.png +0 -0
  134. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_cogent3/tree_basic.png +0 -0
  135. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_cogent3/tree_radial.png +0 -0
  136. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_ete4/leaf_labels.png +0 -0
  137. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_ete4/leaf_labels_hmargin.png +0 -0
  138. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_ete4/split_edges.png +0 -0
  139. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_ete4/tree_basic.png +0 -0
  140. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_ete4/tree_radial.png +0 -0
  141. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/clustering_directed.png +0 -0
  142. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/clustering_directed_large.png +0 -0
  143. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_basic.png +0 -0
  144. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_directed.png +0 -0
  145. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_directed_curved_loops.png +0 -0
  146. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_edit_children.png +0 -0
  147. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_labels.png +0 -0
  148. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_layout_attribute.png +0 -0
  149. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_null.png +0 -0
  150. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_squares_directed.png +0 -0
  151. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/graph_with_curved_edges.png +0 -0
  152. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/igraph_layout_object.png +0 -0
  153. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_igraph/multigraph_with_curved_edges_undirected.png +0 -0
  154. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/cluster-layout.png +0 -0
  155. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/complex.png +0 -0
  156. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/complex_rotatelabels.png +0 -0
  157. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/directed_graph.png +0 -0
  158. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/directed_graph_with_colorbar.png +0 -0
  159. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/empty_graph.png +0 -0
  160. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/flat_style.png +0 -0
  161. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/house_with_colors.png +0 -0
  162. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/labels_and_colors.png +0 -0
  163. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/shortest_path.png +0 -0
  164. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_networkx/simple_graph.png +0 -0
  165. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_simple_network_provider/graph_basic.png +0 -0
  166. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_simple_network_provider/graph_directed.png +0 -0
  167. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_simple_network_provider/graph_labels.png +0 -0
  168. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_skbio/leaf_labels.png +0 -0
  169. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_skbio/leaf_labels_hmargin.png +0 -0
  170. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_skbio/tree_basic.png +0 -0
  171. {iplotx-0.5.0 → iplotx-0.5.1}/tests/baseline_images/test_skbio/tree_radial.png +0 -0
  172. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_arrows.py +0 -0
  173. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_biopython.py +0 -0
  174. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_cascades.py +0 -0
  175. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_cogent3.py +0 -0
  176. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_edge.py +0 -0
  177. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_edge_geometry.py +0 -0
  178. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_ete4.py +0 -0
  179. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_geometry.py +0 -0
  180. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_heuristics.py +0 -0
  181. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_igraph.py +0 -0
  182. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_matplotlib_utils.py +0 -0
  183. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_network_hotload.py +0 -0
  184. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_networkx.py +0 -0
  185. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_ports.py +0 -0
  186. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_simple_network_provider.py +0 -0
  187. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_simple_tree_provider.py +0 -0
  188. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_skbio.py +0 -0
  189. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_style.py +0 -0
  190. {iplotx-0.5.0 → iplotx-0.5.1}/tests/test_vertex.py +0 -0
  191. {iplotx-0.5.0 → iplotx-0.5.1}/tests/utils.py +0 -0
  192. {iplotx-0.5.0 → iplotx-0.5.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iplotx
3
- Version: 0.5.0
3
+ Version: 0.5.1
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
@@ -43,9 +43,25 @@ Description-Content-Type: text/markdown
43
43
  ![pylint](assets/pylint.svg)
44
44
 
45
45
  # iplotx
46
- Plotting networks from igraph and networkx.
46
+ [![Banner](docs/source/_static/banner.png)](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
47
47
 
48
- **NOTE**: This is currently beta quality software. The API and functionality are settling in and might break occasionally.
48
+ Visualise networks and trees in Python, with style.
49
+
50
+ Supports:
51
+ - **networks**:
52
+ - [networkx](https://networkx.org/)
53
+ - [igraph](igraph.readthedocs.io/)
54
+ - [minimal network data structure](https://iplotx.readthedocs.io/en/latest/gallery/plot_simplenetworkdataprovider.html#sphx-glr-gallery-plot-simplenetworkdataprovider-py) (for educational purposes)
55
+ - **trees**:
56
+ - [ETE4](https://etetoolkit.github.io/ete/)
57
+ - [cogent3](https://cogent3.org/)
58
+ - [Biopython](https://biopython.org/)
59
+ - [scikit-bio](https://scikit.bio)
60
+ - [minimal tree data structure](https://iplotx.readthedocs.io/en/latest/gallery/tree/plot_simpletreedataprovider.html#sphx-glr-gallery-tree-plot-simpletreedataprovider-py) (for educational purposes)
61
+
62
+ 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
+
64
+ **NOTE**: This is currently late beta quality software. The API and functionality might break rarely.
49
65
 
50
66
  ## Installation
51
67
  ```bash
@@ -72,19 +88,20 @@ See [readthedocs](https://iplotx.readthedocs.io/en/latest/) for the full documen
72
88
  ## Gallery
73
89
  See [gallery](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
74
90
 
75
- ## Roadmap
76
- - Plot networks from igraph and networkx interchangeably, using matplotlib as a backend. ✅
77
- - Support interactive plotting, e.g. zooming and panning after the plot is created. ✅
78
- - Support storing the plot to disk thanks to the many matplotlib backends (SVG, PNG, PDF, etc.).
79
- - Support flexible yet easy styling. ✅
91
+ ## Features
92
+ - Plot networks from multiple libraries including networkx and igraph, using matplotlib as a backend. ✅
93
+ - Plot trees from multiple libraries such as cogent3, ETE4, skbio, and biopython. ✅
94
+ - Flexible yet easy styling, including an internal library of styles
95
+ - Interactive plotting, e.g. zooming and panning after the plot is created. ✅
96
+ - Store the plot to disk thanks to the many matplotlib backends (SVG, PNG, PDF, etc.). ✅
80
97
  - Efficient plotting of large graphs using matplotlib's collection functionality. ✅
81
- - Support editing plotting elements after the plot is created, e.g. changing node colors, labels, etc. ✅
82
- - Support animations, e.g. showing the evolution of a network over time. ✅
83
- - Support mouse interaction, e.g. hovering over or clicking on nodes and edges to get information about them. ✅
84
- - Support trees from special libraries such as ete3, biopython, etc. This will need a dedicated function and layouting. ✅
85
- - Support uni- and bi-directional communication between graph object and plot object.🏗️
86
-
87
- **NOTE:** The last item can probably be achieved already by using `matplotlib`'s existing callback functionality. It is currently untested, but if you manage to get it to work on your graph let me know and I'll add it to the examples (with credit).
98
+ - Edit plotting elements after the plot is created, e.g. changing node colors, labels, etc. ✅
99
+ - Animations, e.g. showing the evolution of a network over time. ✅
100
+ - Mouse and keyboard interaction, e.g. hovering over nodes/edges to get information about them. ✅
101
+ - Node clustering and covers, e.g. showing communities in a network. ✅
102
+ - Choice of tree layouts and orientations.
103
+ - Tree-specific options: cascades, subtree styling, split edges, etc. ✅
104
+ - (WIP) Support uni- and bi-directional communication between graph object and plot object.🏗️
88
105
 
89
106
  ## Authors
90
107
  Fabio Zanini (https://fabilab.org)
iplotx-0.5.1/README.md ADDED
@@ -0,0 +1,69 @@
1
+ ![Github Actions](https://github.com/fabilab/iplotx/actions/workflows/test.yml/badge.svg)
2
+ ![PyPI - Version](https://img.shields.io/pypi/v/iplotx)
3
+ ![RTD](https://readthedocs.org/projects/iplotx/badge/?version=latest)
4
+ [![Coverage Status](https://coveralls.io/repos/github/fabilab/iplotx/badge.svg?branch=main)](https://coveralls.io/github/fabilab/iplotx?branch=main)
5
+ ![pylint](assets/pylint.svg)
6
+
7
+ # iplotx
8
+ [![Banner](docs/source/_static/banner.png)](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
9
+
10
+ Visualise networks and trees in Python, with style.
11
+
12
+ Supports:
13
+ - **networks**:
14
+ - [networkx](https://networkx.org/)
15
+ - [igraph](igraph.readthedocs.io/)
16
+ - [minimal network data structure](https://iplotx.readthedocs.io/en/latest/gallery/plot_simplenetworkdataprovider.html#sphx-glr-gallery-plot-simplenetworkdataprovider-py) (for educational purposes)
17
+ - **trees**:
18
+ - [ETE4](https://etetoolkit.github.io/ete/)
19
+ - [cogent3](https://cogent3.org/)
20
+ - [Biopython](https://biopython.org/)
21
+ - [scikit-bio](https://scikit.bio)
22
+ - [minimal tree data structure](https://iplotx.readthedocs.io/en/latest/gallery/tree/plot_simpletreedataprovider.html#sphx-glr-gallery-tree-plot-simpletreedataprovider-py) (for educational purposes)
23
+
24
+ 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
+
26
+ **NOTE**: This is currently late beta quality software. The API and functionality might break rarely.
27
+
28
+ ## Installation
29
+ ```bash
30
+ pip install iplotx
31
+ ```
32
+
33
+ ## Quick Start
34
+ ```python
35
+ import networkx as nx
36
+ import matplotlib.pyplot as plt
37
+ import iplotx as ipx
38
+
39
+ g = nx.Graph([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)])
40
+ layout = nx.layout.circular_layout(g)
41
+ fig, ax = plt.subplots(figsize=(3, 3))
42
+ ipx.plot(g, ax=ax, layout=layout)
43
+ ```
44
+
45
+ ![Quick start image](docs/source/_static/graph_basic.png)
46
+
47
+ ## Documentation
48
+ See [readthedocs](https://iplotx.readthedocs.io/en/latest/) for the full documentation.
49
+
50
+ ## Gallery
51
+ See [gallery](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
52
+
53
+ ## Features
54
+ - Plot networks from multiple libraries including networkx and igraph, using matplotlib as a backend. ✅
55
+ - Plot trees from multiple libraries such as cogent3, ETE4, skbio, and biopython. ✅
56
+ - Flexible yet easy styling, including an internal library of styles ✅
57
+ - Interactive plotting, e.g. zooming and panning after the plot is created. ✅
58
+ - Store the plot to disk thanks to the many matplotlib backends (SVG, PNG, PDF, etc.). ✅
59
+ - Efficient plotting of large graphs using matplotlib's collection functionality. ✅
60
+ - Edit plotting elements after the plot is created, e.g. changing node colors, labels, etc. ✅
61
+ - Animations, e.g. showing the evolution of a network over time. ✅
62
+ - Mouse and keyboard interaction, e.g. hovering over nodes/edges to get information about them. ✅
63
+ - Node clustering and covers, e.g. showing communities in a network. ✅
64
+ - Choice of tree layouts and orientations. ✅
65
+ - Tree-specific options: cascades, subtree styling, split edges, etc. ✅
66
+ - (WIP) Support uni- and bi-directional communication between graph object and plot object.🏗️
67
+
68
+ ## Authors
69
+ Fabio Zanini (https://fabilab.org)
@@ -1,6 +1,6 @@
1
1
  """
2
- Styling clades
3
- ==============
2
+ Subtrees and cascades
3
+ =====================
4
4
 
5
5
  This Biopython-inspired example shows how to style clade edges for a
6
6
  node and its descendants.
@@ -1,6 +1,6 @@
1
1
  """
2
- Clade styling
3
- =============
2
+ Subtree styling
3
+ ===============
4
4
 
5
5
  This example shows how to style tree clades - or subtrees - post rendering,
6
6
  similar of the equivalent option in `cogent3`.
@@ -96,7 +96,6 @@ def _get_shorter_edge_coords(vpath, vsize, theta):
96
96
  xe = v1[0]
97
97
  else:
98
98
  m12 = (v2[1] - v1[1]) / (v2[0] - v1[0])
99
- print(m12, mtheta)
100
99
  xe = (v1[1] - m12 * v1[0]) / (mtheta - m12)
101
100
  ye = mtheta * xe
102
101
  ve = np.array([xe, ye])
@@ -199,7 +198,6 @@ def _compute_edge_path_straight(
199
198
 
200
199
  # Angle of the straight line
201
200
  theta = atan2(*((vcoord_fig[1] - vcoord_fig[0])[::-1]))
202
- print(vcoord_data_cart, vcoord_fig, theta)
203
201
 
204
202
  # Shorten at starting vertex
205
203
  vs = _get_shorter_edge_coords(vpath_fig[0], vsize_fig[0], theta) + vcoord_fig[0]
@@ -2,4 +2,4 @@
2
2
  iplotx version information module.
3
3
  """
4
4
 
5
- __version__ = "0.5.0"
5
+ __version__ = "0.5.1"
@@ -0,0 +1,82 @@
1
+ """
2
+ Make banner image for the package.
3
+ """
4
+
5
+ import numpy as np
6
+ import pathlib
7
+ from matplotlib import patches
8
+ import matplotlib.pyplot as plt
9
+
10
+
11
+ def squareify(image):
12
+ height, width, ncols = image.shape
13
+ dmax = max(height, width)
14
+ new = np.zeros((dmax, dmax, ncols), dtype=image.dtype)
15
+ if height > width:
16
+ diff = (height - width) // 2
17
+ new[:, diff : diff + width, :] = image
18
+ new[:, : diff + 3, :] = 1
19
+ new[:, diff + width - 3 :] = 1
20
+ elif width > height:
21
+ diff = (width - height) // 2
22
+ new[diff : diff + height, :, :] = image
23
+ new[: diff + 3, :, :] = 1
24
+ new[diff + height - 3 :, :, :] = 1
25
+
26
+ zoom = 250
27
+ diff = (new.shape[0] - zoom) // 2
28
+ new = new[diff : diff + zoom, diff : diff + zoom, :]
29
+
30
+ return new
31
+
32
+
33
+ if __name__ == "__main__":
34
+ # Select random ones to fill a grid
35
+ grid_shape = (4, 6)
36
+ nimages = grid_shape[0] * grid_shape[1]
37
+
38
+ # Folder with the images to patchwork
39
+ image_folder_path = pathlib.Path(__file__).parent.parent / "docs" / "build" / "_images"
40
+ images_all = list(image_folder_path.glob("*_thumb.png"))
41
+ images = [images_all[i] for i in np.random.choice(len(images_all), nimages, replace=False)]
42
+
43
+ k = 2.0
44
+ kx, ky = 1.13, 0.98
45
+ fig, ax = plt.subplots(figsize=(k * grid_shape[1], k * grid_shape[0]))
46
+ for i in range(grid_shape[0]):
47
+ for j in range(grid_shape[1]):
48
+ ij = grid_shape[1] * i + j
49
+ print(ij)
50
+ img = plt.imread(images[ij])
51
+ xmin = kx * (j + 0.5 * int(i % 2))
52
+ xmax = xmin + kx * 1
53
+ ymin = ky * (grid_shape[0] - 1 - i)
54
+ ymax = ymin + ky * 1
55
+ center = xmin + 0.5, ymin + 0.5
56
+ patch = patches.RegularPolygon(
57
+ center,
58
+ 6,
59
+ radius=0.65,
60
+ transform=ax.transData,
61
+ facecolor="none",
62
+ edgecolor="black",
63
+ linewidth=1.5,
64
+ )
65
+ ax.add_patch(patch)
66
+ # ax.text(
67
+ # center[0], center[1], str(ij), ha="center", va="center", fontsize=8, color="black"
68
+ # )
69
+ # Extend to square
70
+ img = squareify(img)
71
+ im = ax.imshow(img, extent=(xmin, xmax, ymin, ymax), aspect=1.0)
72
+ im.set_clip_path(patch)
73
+ ax.set(
74
+ xlim=(-0.2 * kx, kx * (grid_shape[1] + 0.5 * int(grid_shape[0] > 1))),
75
+ ylim=(-0.2 * ky, ky * (grid_shape[0] + 0.2)),
76
+ aspect=1.0,
77
+ )
78
+ ax.set_axis_off()
79
+ plt.ion()
80
+ plt.show()
81
+
82
+ fig.savefig(image_folder_path.parent.parent / "source" / "_static" / "banner.png", dpi=100)
iplotx-0.5.0/README.md DELETED
@@ -1,52 +0,0 @@
1
- ![Github Actions](https://github.com/fabilab/iplotx/actions/workflows/test.yml/badge.svg)
2
- ![PyPI - Version](https://img.shields.io/pypi/v/iplotx)
3
- ![RTD](https://readthedocs.org/projects/iplotx/badge/?version=latest)
4
- [![Coverage Status](https://coveralls.io/repos/github/fabilab/iplotx/badge.svg?branch=main)](https://coveralls.io/github/fabilab/iplotx?branch=main)
5
- ![pylint](assets/pylint.svg)
6
-
7
- # iplotx
8
- Plotting networks from igraph and networkx.
9
-
10
- **NOTE**: This is currently beta quality software. The API and functionality are settling in and might break occasionally.
11
-
12
- ## Installation
13
- ```bash
14
- pip install iplotx
15
- ```
16
-
17
- ## Quick Start
18
- ```python
19
- import networkx as nx
20
- import matplotlib.pyplot as plt
21
- import iplotx as ipx
22
-
23
- g = nx.Graph([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)])
24
- layout = nx.layout.circular_layout(g)
25
- fig, ax = plt.subplots(figsize=(3, 3))
26
- ipx.plot(g, ax=ax, layout=layout)
27
- ```
28
-
29
- ![Quick start image](docs/source/_static/graph_basic.png)
30
-
31
- ## Documentation
32
- See [readthedocs](https://iplotx.readthedocs.io/en/latest/) for the full documentation.
33
-
34
- ## Gallery
35
- See [gallery](https://iplotx.readthedocs.io/en/latest/gallery/index.html).
36
-
37
- ## Roadmap
38
- - Plot networks from igraph and networkx interchangeably, using matplotlib as a backend. ✅
39
- - Support interactive plotting, e.g. zooming and panning after the plot is created. ✅
40
- - Support storing the plot to disk thanks to the many matplotlib backends (SVG, PNG, PDF, etc.). ✅
41
- - Support flexible yet easy styling. ✅
42
- - Efficient plotting of large graphs using matplotlib's collection functionality. ✅
43
- - Support editing plotting elements after the plot is created, e.g. changing node colors, labels, etc. ✅
44
- - Support animations, e.g. showing the evolution of a network over time. ✅
45
- - Support mouse interaction, e.g. hovering over or clicking on nodes and edges to get information about them. ✅
46
- - Support trees from special libraries such as ete3, biopython, etc. This will need a dedicated function and layouting. ✅
47
- - Support uni- and bi-directional communication between graph object and plot object.🏗️
48
-
49
- **NOTE:** The last item can probably be achieved already by using `matplotlib`'s existing callback functionality. It is currently untested, but if you manage to get it to work on your graph let me know and I'll add it to the examples (with credit).
50
-
51
- ## Authors
52
- Fabio Zanini (https://fabilab.org)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes