~tfardet: 1 Doc+Plot: move to Furo + directed chord diagram 25 files changed, 95 insertions(+), 437 deletions(-)
Copy & paste the following snippet into your terminal to import this patchset into git:
curl -s https://lists.sr.ht/~tfardet/nngt-developers/patches/35652/mbox | git am -3Learn more about email & git
From: Tanguy Fardet <tanguyfardet@protonmail.com> --- README.md | 7 +- doc/_static/custom.css | 24 ++ doc/_templates/base.html | 5 + doc/_templates/customtoc.html | 6 - doc/_templates/layout.html | 6 - doc/_templates/nngt_logo.png | Bin 13400 -> 0 bytes doc/conf.py | 81 ++--- doc/developer/contributing.rst | 4 - .../graph_structure/plot_chord_diagram.py | 9 +- doc/index.rst | 3 + doc/modules/database.rst | 4 - doc/modules/nngt.rst.in | 3 - doc/modules/nngt/graph-classes.rst.in | 3 - doc/modules/nngt/side-classes.rst.in | 3 - doc/nngt_theme/static/nngt_theme.css | 302 ------------------ doc/nngt_theme/theme.conf | 4 - doc/user/activity-analysis.rst | 3 - doc/user/component-properties.rst | 5 - doc/user/graph-generation.rst | 6 - doc/user/nest-interaction.rst | 6 - doc/user/neural-groups.rst | 5 - doc/user/parallelism.rst | 3 - doc/user/tutorial.rst | 6 - nngt/generation/func_connect.h | 14 +- nngt/plot/plt_networks.py | 20 +- 25 files changed, 95 insertions(+), 437 deletions(-) create mode 100644 doc/_static/custom.css create mode 100644 doc/_templates/base.html delete mode 100755 doc/_templates/customtoc.html delete mode 100644 doc/_templates/layout.html delete mode 100755 doc/_templates/nngt_logo.png delete mode 100755 doc/nngt_theme/static/nngt_theme.css delete mode 100755 doc/nngt_theme/theme.conf diff --git a/README.md b/README.md index 8ea1457..71b6133 100755 --- a/README.md +++ b/README.md @@ -18,9 +18,14 @@ activity simulators to make the study of neuronal activity as easy and efficient as possible. Source code is available and contributions are accepted on -[SourceHut](https://sr.ht/~tfardet/NNGT) and +[SourceHut](https://sr.ht/~tfardet/NNGT) (preferred), +[Codeberg](https://codeberg.org/tfardet/NNGT), and [GitHub](https://github.com/tfardet/NNGT). +For questions or issues, please check the +[mailing list](https://lists.sr.ht/~tfardet/nngt-users) and the +[issue tracker](https://codeberg.org/tfardet/NNGT/issues). + ## Principle diff --git a/doc/_static/custom.css b/doc/_static/custom.css new file mode 100644 index 0000000..ef90ae8 --- /dev/null +++ b/doc/_static/custom.css @@ -0,0 +1,24 @@ +footer { + font-size: 95%; +} + +.toc-drawer { + font-size: 110%; +} + +.sidebar-logo { + max-width: 90% !important; +} + +.sphx-glr-thumbnails{ + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)) !important; +} + +.sphx-glr-thumbcontainer img { + max-height: 320px !important; + max-width: 320px !important; +} + +.admonition { + font-size: 90%; +} diff --git a/doc/_templates/base.html b/doc/_templates/base.html new file mode 100644 index 0000000..59dc79b --- /dev/null +++ b/doc/_templates/base.html @@ -0,0 +1,5 @@ +{% extends "!base.html" %} +{% block site_meta %} + <meta name="keywords" content="nngt, network, graph, topology, complex networks, networkx, igraph, graph-tool, neuron, neuronal, python, nest" /> + <meta name="description" content="Documentation for the python module NNGT, aimed at generating and analyzing complex graphs, with specific additions for GIS and to describe neuronal networks plus interface them with simulators." /> +{% endblock %} diff --git a/doc/_templates/customtoc.html b/doc/_templates/customtoc.html deleted file mode 100755 index 899200a..0000000 --- a/doc/_templates/customtoc.html @@ -1,6 +0,0 @@ -<a href={{ pathto(master_doc) }}><img class="logo" src={{ pathto("_static/nngt_logo.svg",1) }}></a> -<p class="toctitle">Table of content</p> -<ul class="globaltoc"> - {{ toctree(maxdepth=-1, collapse=True,includehidden=True) }} -</ul> -<br /> diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html deleted file mode 100644 index 0e7863b..0000000 --- a/doc/_templates/layout.html @@ -1,6 +0,0 @@ -{% extends "!layout.html" %} -{% block extrahead %} - {{ super() }} - <meta name="keywords" content="nngt, neuron, network, graph, topology, neuronal, python, nest" /> - <meta name="description" content="Documentation for the python module NNGT, aimed at describing neuronal networks and interfacing them with simulators." /> -{% endblock %} diff --git a/doc/_templates/nngt_logo.png b/doc/_templates/nngt_logo.png deleted file mode 100755 index 2cd83f6cdcad7a7c98608d336bee902bc0eb6458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13400 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 K64hb`LH_~d&y}12 diff --git a/doc/conf.py b/doc/conf.py index c8a98a2..b125bbb 100755 --- a/doc/conf.py +++ b/doc/conf.py @@ -228,6 +228,7 @@ extensions = [ 'linksourcecode', 'extlinks_fancy', 'sphinx_gallery.gen_gallery', + 'sphinx_copybutton', ] # Add any paths that contain templates here, relative to this directory. @@ -268,7 +269,7 @@ release = nngt_version # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = None +language = 'en' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: @@ -309,75 +310,45 @@ todo_include_todos = False # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -#~ html_theme = 'sphinx_rtd_theme' -html_theme = 'nngt_theme' -html_theme_path = ["."] + sphinx_bootstrap_theme.get_html_theme_path() -html_use_smartypants = False +html_theme = 'furo' + +html_sidebars = { + "**": [ + "sidebar/scroll-start.html", + "sidebar/brand.html", + "sidebar/search.html", + "sidebar/navigation.html", + "sidebar/scroll-end.html", + ] +} html_theme_options = { - # A list of tuples containing pages or urls to link to. - # Valid tuples should be in the following forms: - # (name, page) # a link to a page - # (name, "/aa/bb", 1) # a link to an arbitrary relative url - # (name, "http://example.com", True) # arbitrary absolute url - # Note the "1" or "True" value above as the third argument to indicate - # an arbitrary url. - 'navbar_links': [ - ("Modules", "py-modindex"), - ("Index", "genindex"), - ("SourceHut", "https://git.sr.ht/~tfardet/NNGT", True), - ("GitHub", "https://github.com/tfardet/NNGT", True), - ], - - # Render the next and previous page links in navbar. (Default: true) - 'navbar_sidebarrel': False, - - # Render the current pages TOC in the navbar. (Default: true) - 'navbar_pagenav': True, - - # Tab name for the current pages TOC. (Default: "Page") - 'navbar_pagenav_name': "Current", - - # Global TOC depth for "site" navbar tab. (Default: 1) - # Switching to -1 shows all levels. - 'globaltoc_depth': 2, - - # Include hidden TOCs in Site navbar? - # - # Note: If this is "false", you cannot have mixed ``:hidden:`` and - # non-hidden ``toctree`` directives in the same page, or else the build - # will break. - # - # Values: "true" (default) or "false" - 'globaltoc_includehidden': "true", - - # Fix navigation bar to top of page? - # Values: "true" (default) or "false" - 'navbar_fixed_top': "false", - - # Location of link to source. - # Options are "nav" (default), "footer" or anything else to exclude. - 'source_link_position': "", - - # Bootswatch (http://bootswatch.com/) theme. - 'bootswatch_theme': "yeti" + "light_css_variables": { + "color-brand-primary": "#527fbf", + "color-brand-content": "#527fbf", + }, + "dark_css_variables": { + "color-brand-primary": "#82afdf", + "color-brand-content": "#82afdf", + }, } -html_sidebars = {'**': ['customtoc.html', 'searchbox.html']} +html_css_files = [ + 'custom.css', +] # The name for this set of Sphinx documents. If None, it defaults to # "<project> v<release> documentation". -#html_title = None +html_title = f'NNGT {nngt.__version__}' # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. -#~ html_logo = 'images/nngt_logo.png' -#~ html_logo = 'images/nngt_ico.png' +html_logo = '_static/nngt_logo.svg' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 diff --git a/doc/developer/contributing.rst b/doc/developer/contributing.rst index 9a9095f..e6faa0c 100644 --- a/doc/developer/contributing.rst +++ b/doc/developer/contributing.rst @@ -3,10 +3,6 @@ Contributing to NNGT ==================== -.. contents:: - :local: - - Signaling issues and bugs ========================= diff --git a/doc/examples/graph_structure/plot_chord_diagram.py b/doc/examples/graph_structure/plot_chord_diagram.py index d3fe9eb..e99481f 100644 --- a/doc/examples/graph_structure/plot_chord_diagram.py +++ b/doc/examples/graph_structure/plot_chord_diagram.py @@ -42,7 +42,7 @@ names = ["R1", "R2", "R3", "R4"] struct = nngt.Structure.from_groups((room1, room2, room3, room4), names) -g = nngt.Graph(structure=struct) +g = nngt.Graph(structure=struct, directed=True) for room in struct: nngt.generation.connect_groups(g, room, room, "all_to_all") @@ -59,5 +59,10 @@ nngt.generation.connect_groups(g, room4, room3, "erdos_renyi", avg_deg=10) sg = g.get_structure_graph() +# undirected version of the chord diagram nngt.plot.chord_diagram(sg, names="name", sort="distance", fontcolor="grey", - use_gradient=True, show=True) + use_gradient=True, directed=False, show=False) + +# directed chord diagram +nngt.plot.chord_diagram(sg, names="name", sort="distance", fontcolor="grey", + use_gradient=True, directed=True, show=True) diff --git a/doc/index.rst b/doc/index.rst index ed1edd9..a25cd5c 100755 --- a/doc/index.rst +++ b/doc/index.rst @@ -92,6 +92,9 @@ The docs :caption: Contributing developer/contributing + SourceHut <https://git.sr.ht/~tfardet/NNGT> + Codeberg <https://codeberg.org/tfardet/NNGT> + GitHub <https://github.com/tfardet/NNGT> .. toctree:: :glob: diff --git a/doc/modules/database.rst b/doc/modules/database.rst index 5e6cd51..292491c 100755 --- a/doc/modules/database.rst +++ b/doc/modules/database.rst @@ -11,10 +11,6 @@ The commands are then used by calling ``nngt.database`` to access the database tools. -.. contents:: - :local: - - Functions --------- diff --git a/doc/modules/nngt.rst.in b/doc/modules/nngt.rst.in index a33c71b..09f6d45 100644 --- a/doc/modules/nngt.rst.in +++ b/doc/modules/nngt.rst.in @@ -4,9 +4,6 @@ Main module (API) ================= -.. contents:: Overview - :local: - For more details regarding the main classes, see: .. toctree:: diff --git a/doc/modules/nngt/graph-classes.rst.in b/doc/modules/nngt/graph-classes.rst.in index c2f1705..6fb8d86 100644 --- a/doc/modules/nngt/graph-classes.rst.in +++ b/doc/modules/nngt/graph-classes.rst.in @@ -19,9 +19,6 @@ Unless specified, child classes can use all methods from the parent class (the only exception is :meth:`~nngt.Graph.set_types` which is not available to the :class:`~nngt.Network` subclasses). -.. contents:: - :local: - Summary of the class members and methods ---------------------------------------- diff --git a/doc/modules/nngt/side-classes.rst.in b/doc/modules/nngt/side-classes.rst.in index 9036617..2c2486b 100755 --- a/doc/modules/nngt/side-classes.rst.in +++ b/doc/modules/nngt/side-classes.rst.in @@ -21,9 +21,6 @@ Unless specified, child classes can use all methods from the parent class :class:`~nngt.MetaNeuralGroup` inherit from :class:`~nngt.Group` while :class:`~nngt.NeuralPop` inherits from :class:`~nngt.Structure`). -.. contents:: - :local: - Group +++++ diff --git a/doc/nngt_theme/static/nngt_theme.css b/doc/nngt_theme/static/nngt_theme.css deleted file mode 100755 index 60ce9f4..0000000 --- a/doc/nngt_theme/static/nngt_theme.css @@ -1,302 +0,0 @@ -@import url("bootstrap-sphinx.css"); - -:root { - --bg-color: #ffffff; - --fg-color: #000000; - --nv-color: #333333; - --hv-color: #eeeeee; - --sb-color: #f7f5fa; - --dt-color: #f3f3fb; - --alert-info: #5bc0de; - --admonition-a: #555555; - --a-color: #008cba; - --highlighted: #fbe54e; -} - -@media (prefers-color-scheme: dark) { - :root { - --bg-color: #222222; - --fg-color: #eeeeee; - --nv-color: #dddddd; - --hv-color: #333333; - --sb-color: #3f3f3f; - --dt-color: #111111; - --alert-info: #1e7bb3; - --admonition-a: #bbbbbb; - --a-color: #2ec5f6; - --highlighted: #80731e; - } - - /* math */ - - img.math { - -webkit-filter: invert(100%); - filter: invert(100%); - } - - div.math img { - -webkit-filter: invert(100%); - filter: invert(100%); - } - - div.highlight { - -webkit-filter: invert(100%) hue-rotate(180deg); - filter: invert(100%) hue-rotate(180deg); - } - - code { - -webkit-filter: invert(100%) hue-rotate(180deg); - filter: invert(100%) hue-rotate(180deg); - } - - code span.pre { - -webkit-filter: hue-rotate(180deg); - filter: hue-rotate(180deg); - } -} - -@media (prefers-color-scheme: no-preference) { - :root { - --bg-color: #ffffff; - --fg-color: #000000; - --nv-color: #333333; - --hv-color: #eeeeee; - --sb-color: #f7f5fa; - --dt-color: #f3f3fb; - --alert-info: #5bc0de; - --admonition-a: #555555; - --a-color: #008cba; - } -} - -body { - color: var(--fg-color) !important; - background-color: var(--bg-color) !important; -} - - -a.headerlink { - visibility: hidden; -} - -code.descclassname, code.descname { - font-size: 110%; -} - -/* -Left navbar -*/ - -#sidebar { - border: solid 1px #cccccc; - background-color: var(--sb-color); -} - -.bs-sidenav { - text-shadow: 0 1px 0 var(--bg-color); -} - -.bs-sidenav .nav > li > a { - color: var(--nv-color) !important; -} - -nav > li > a:hover, .nav > li > a:focus { - background-color: var(--hv-color) !important; -} - -nav > li > a:hover, .nav > li > a:hover { - background-color: var(--hv-color) !important; -} - -div.col-md-3 { - text-align: center; -} - -div.col-md-3 p.caption { - padding: 0; - margin: 1ex 0 0.5ex 0; -} - -p.toctitle { - padding-left: 0; - font-weight: bold; - font-size: 150%; - font-variant: small-caps; -} - -p.caption { - padding: 0 0 0 1em; - margin: 1ex 0 0.5ex 0; - font-weight: bold; -} - -ul.globaltoc { - font-size: 120%; - padding: 0; - margin: 0; -} - -ul.simple p { - margin-bottom: 0; -} - -img.logo { - margin: 1ex 0 1em 0; - width: 150px; - height: auto; -} - - -/* -Documentation functions -*/ - -a { - color: var(--a-color); - text-decoration: none; -} - -table { - font-size: 100%; -} - -dl { - margin: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -dl.function, dl.class, dl.exception { - padding-top: 0; - clear: both; - margin: 1em 0 1ex 0; -} - -dl.function, dl.exception { - border-top: 3px solid #cccccc; - border-radius: 3px; -} - -dl.class { - border-top: 3px solid #729fcf; - border-radius: 3px; -} - -dl.function dt, dl.class dt, dl.exception dt { - margin-bottom: 1ex; - padding: 0.5ex 1ex 0.5ex 1ex; - border-radius: 3px; -} - -dl.function dt, dl.exception dt { - background-color: var(--sb-color); -} - -dl.class dt { - background-color: var(--dt-color); - border-radius: 3px; -} - -dl.field-list dt, dl.simple dt { - background-color: var(--bg-color); -} - -dt.field-odd, dt.field-even { - background-color: var(--bg-color); -} - -table.longtable { - font-size: 100%; -} - -.admonition { - font-size: 100%; -} - -dl.citation dt.label { - background-color: none; - margin-right: 5px; - color: var(--fg-color); -} - -a.fn-backref { - color: #000000; -} - -table.citation { - border-left: none; - font-size: 100%; -} - -table.citation td.label { - font-size: 100%; - display: block; - line-height: normal; - padding: none; - vertical-align: baseline; - border: none; - color: #000000; -} - -.citation td { - width: 100%; -} - -.admonition a { - color: var(--admonition-a); -} - -a.fn-backref { - color: var(--fg-color); -} - -dt:target, span.highlighted { - background-color: var(--highlighted); -} - -.alert-info { - background-color: var(--alert-info) !important; -} - -.form-control { - background-color: var(--bg-color) !important; -} - - -/* -Sphinx gallery image size -*/ - -.sphx-glr-thumbcontainer { - min-height: 330px !important; - margin-bottom: 10px !important; - background: var(--bg-color) !important; - border-color: var(--admonition-a) !important; -} - -.sphx-glr-thumbcontainer .figure { - width: 320px !important; -} - -.sphx-glr-thumbcontainer img { - max-height: 300px !important; - width: 300px !important; - max-width: 300px !important; -} - -.sphx-glr-thumbcontainer a.internal { - padding: 310px 10px 0 !important; -} - -div.sphx-glr-download a { - background-color: var(--bg-color) !important; - border-color: #aaaaaa !important; - background-image: linear-gradient(to bottom, var(--bg-color), var(--sb-color)) !important; -} - -div.sphx-glr-download a:hover { - background-image: linear-gradient(to top, var(--sb-color), var(--sb-color)) !important; -} diff --git a/doc/nngt_theme/theme.conf b/doc/nngt_theme/theme.conf deleted file mode 100755 index 2056a7a..0000000 --- a/doc/nngt_theme/theme.conf @@ -1,4 +0,0 @@ -[theme] -inherit = bootstrap -stylesheet = nngt_theme.css -pygments_style = sphinx diff --git a/doc/user/activity-analysis.rst b/doc/user/activity-analysis.rst index 5ba84fd..71c1a9d 100755 --- a/doc/user/activity-analysis.rst +++ b/doc/user/activity-analysis.rst @@ -4,9 +4,6 @@ Activity analysis ================= -.. contents:: - :local: - Principle ========= diff --git a/doc/user/component-properties.rst b/doc/user/component-properties.rst index c353bbb..fd20fdd 100755 --- a/doc/user/component-properties.rst +++ b/doc/user/component-properties.rst @@ -7,11 +7,6 @@ Properties of graph components This section details the different attributes and properties which can be associated to nodes/neurons and connections in graphs and networks. -**Content:** - -.. contents:: - :local: - Components of a graph ===================== diff --git a/doc/user/graph-generation.rst b/doc/user/graph-generation.rst index 41ce8bb..b683afe 100755 --- a/doc/user/graph-generation.rst +++ b/doc/user/graph-generation.rst @@ -12,12 +12,6 @@ The example files can be found at: :source:`docs/examples/simple_graphs.py`, :source:`docs/examples/nest_receptor_ports.py`. -**Content:** - -.. contents:: - :local: - - Principle ========= diff --git a/doc/user/nest-interaction.rst b/doc/user/nest-interaction.rst index a66cf8c..e3c81e8 100644 --- a/doc/user/nest-interaction.rst +++ b/doc/user/nest-interaction.rst @@ -37,12 +37,6 @@ found here: :source:`docs/examples/nest_network.py` / :source:`docs/examples/nest_receptor_ports.py`. -**Content:** - -.. contents:: - :local: - - Creating detailed neuronal networks =================================== diff --git a/doc/user/neural-groups.rst b/doc/user/neural-groups.rst index 4d2a2d4..a96fba4 100644 --- a/doc/user/neural-groups.rst +++ b/doc/user/neural-groups.rst @@ -13,11 +13,6 @@ additional information on how to access :class:`~nngt.NeuralGroup` and :class:`~nngt.NeuralPop` properties can be found there: :source:`docs/examples/introduction_to_groups.py`. -**Contents** - -.. contents:: - :local: - Neuronal groups =============== diff --git a/doc/user/parallelism.rst b/doc/user/parallelism.rst index a17df12..3aeb489 100755 --- a/doc/user/parallelism.rst +++ b/doc/user/parallelism.rst @@ -8,9 +8,6 @@ Parallelism When using ``graph-tool``, read carefully the `Graph-tool caveat`_ section before playing with multiple threads! -.. contents:: - :local: - Principle ========= diff --git a/doc/user/tutorial.rst b/doc/user/tutorial.rst index 8556d9d..cd36131 100644 --- a/doc/user/tutorial.rst +++ b/doc/user/tutorial.rst @@ -35,12 +35,6 @@ The source file for the tutorial can be found here: * :ref:`graph-prop` -**Content:** - -.. contents:: - :local: - - NNGT properties and configuration ================================= diff --git a/nngt/generation/func_connect.h b/nngt/generation/func_connect.h index 35337be..e7731de 100644 --- a/nngt/generation/func_connect.h +++ b/nngt/generation/func_connect.h @@ -5,14 +5,14 @@ #ifndef FUNC_CONNECT_H #define FUNC_CONNECT_H +#include <algorithm> +#include <cmath> +#include <functional> #include <string> #include <vector> #include <tuple> #include <unordered_set> -#include <cmath> -#include <algorithm> - namespace generation { @@ -46,7 +46,7 @@ typedef std::unordered_set<edge_t, key_hash, key_equal> set_t; * Sort a vector to move the N unique numbers in the N first entries. * * \param a - Source array. - * + * * .. note:: * The array is modified inplace. * @@ -60,7 +60,7 @@ size_t _unique_1d(std::vector<size_t>& a, * Sort a 2-D vector to move the N unique pairs in the N first columns. * * \param a - Source array. - * + * * .. note:: * The array is modified inplace. * @@ -119,7 +119,7 @@ void _gen_edges( /* * Parallel distance-rule generator. - * + * * \param ia_edges - array that will contain the edges * \param source_nodes - array containing the ids of the source nodes * \param target_nodes - array containing the ids of the target nodes @@ -151,7 +151,7 @@ static inline float _proba( { float p = 0.; // probability value - switch (rule) + switch (rule) { case 0: // linear p = norm*std::max(0., 1. - distance * inv_scale); diff --git a/nngt/plot/plt_networks.py b/nngt/plot/plt_networks.py index 7b4dd47..a7bb391 100755 --- a/nngt/plot/plt_networks.py +++ b/nngt/plot/plt_networks.py @@ -1531,7 +1531,7 @@ def library_draw(network, nsize="total-degree", ncolor=None, nshape="o", def chord_diagram(network, weights=True, names=None, order=None, width=0.1, pad=2., gap=0.03, chordwidth=0.7, axis=None, colors=None, cmap=None, alpha=0.7, use_gradient=False, chord_colors=None, - show=False, **kwargs): + start_at=0, extent=360, directed=None, show=False, **kwargs): """ Plot a chord diagram. @@ -1579,6 +1579,17 @@ def chord_diagram(network, weights=True, names=None, order=None, width=0.1, (in this case, RGB tuples are accepted as entries to the list). Each chord will get its color from its associated source node, or from both nodes if `use_gradient` is True. + start_at : float, optional (default : 0) + Location, in degrees, where the diagram should start on the unit circle. + Default is to start at 0 degrees, i.e. (x, y) = (1, 0) or 3 o'clock), + and move counter-clockwise + extent : float, optional (default : 360) + The angular aperture, in degrees, of the diagram. + Default is to use the whole circle, i.e. 360 degrees, but in some cases + it can be useful to use only a part of it. + directed : bool, optional (default: same as network) + Whether the chords should be directed with one part of each arc + dedicated to outgoing chords and the other to incoming ones. show : bool, optional (default: False) Whether the plot should be displayed immediately via an automatic call to `plt.show()`. @@ -1600,11 +1611,14 @@ def chord_diagram(network, weights=True, names=None, order=None, width=0.1, mat = network.adjacency_matrix(weights=ww) + if directed is None: + directed = network.is_directed() + return _chord_diag( mat, nn, order=order, width=width, pad=pad, gap=gap, chordwidth=chordwidth, ax=axis, colors=colors, cmap=cmap, alpha=alpha, - use_gradient=use_gradient, chord_colors=chord_colors, show=show, - **kwargs) + use_gradient=use_gradient, chord_colors=chord_colors, start_at=start_at, + extent=extent, directed=directed, show=show, **kwargs) # ----- # -- 2.34.4
builds.sr.ht <builds@sr.ht>NNGT/patches/.build.yml: SUCCESS in 25m17s [Doc+Plot: move to Furo + directed chord diagram][0] from [~tfardet][1] [0]: https://lists.sr.ht/~tfardet/nngt-developers/patches/35652 [1]: mailto:tanguyfardet@protonmail.com ✓ #852097 SUCCESS NNGT/patches/.build.yml https://builds.sr.ht/~tfardet/job/852097