<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="other" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">F1000Research</journal-id>
            <journal-title-group>
                <journal-title>F1000Research</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2046-1402</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/f1000research.173131.1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Software Tool Article</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>A universal tool for visualisation of networks and trees in Python</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 2 approved]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Zanini</surname>
                        <given-names>Fabio</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Data Curation</role>
                    <role content-type="http://credit.niso.org/">Formal Analysis</role>
                    <role content-type="http://credit.niso.org/">Investigation</role>
                    <role content-type="http://credit.niso.org/">Methodology</role>
                    <role content-type="http://credit.niso.org/">Project Administration</role>
                    <role content-type="http://credit.niso.org/">Resources</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Visualization</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-7097-8539</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                    <xref ref-type="aff" rid="a2">2</xref>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>School of Clinical Medicine, University of New South Wales, Sydney, New South Wales, 2052, Australia</aff>
                <aff id="a2">
                    <label>2</label>Ecology &amp; Evolution Research Centre, University of New South Wales, Sydney, NSW, 2052, Australia</aff>
                <aff id="a3">
                    <label>3</label>UNSW Cellular Genomics Futures Institute, UNSW, NSW, 2052, Australia</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:fabio.zanini@unsw.edu.au">fabio.zanini@unsw.edu.au</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>9</day>
                <month>12</month>
                <year>2025</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2025</year>
            </pub-date>
            <volume>14</volume>
            <elocation-id>1377</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>26</day>
                    <month>11</month>
                    <year>2025</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2025 Zanini F</copyright-statement>
                <copyright-year>2025</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://f1000research.com/articles/14-1377/pdf"/>
            <abstract>
                <sec>
                    <title>Background</title>
                    <p>Graphs or networks are ubiquitous data structures across scientific disciplines, from ecological and molecular to social networks. Visualisation is an important step to gain insight into network data, however most network analysis software packages, such as 
                        <italic toggle="yes">igraph</italic> and 
                        <italic toggle="yes">NetworkX</italic>, focus on statistical tools and offer limited visualisation options. Other packages offer powerful graphical user interfaces but rely on custom formats and implementations, which restricts interoperability with other scientific software.</p>
                </sec>
                <sec>
                    <title>Methods</title>
                    <p>

                        <italic toggle="yes">iplotx</italic> is a Python software package designed to act as a universal visualiser for any network analysis package. A simple yet rich declarative style grammar enables customisation of any visual element including edge geometry, marker size and shape, labels, and groupings. Rendering relies on custom Matplotlib artists, which enables broad interoperability with other data visualisation libraries.</p>
                </sec>
                <sec>
                    <title>Results</title>
                    <p>

                        <italic toggle="yes">iplotx</italic> supports eight different network and tree analysis packages (NetworkX, igraph, graph tool, Biopython, ETE, cogent3, dendropy, and scikit-bio) and implements a plug-in mechanism for universal input compatibility. It supports a wide spectrum of outputs including raster and vector images, animations, and interactive plots. The package implements unique features such as three-dimensional network visualisations and is fully compatible with the Python scientific software stack including seaborn, scipy, pandas, and Cartopy. Areas of application for 
                        <italic toggle="yes">iplotx</italic> include biomolecular and gene regulatory networks, protein-protein interactions, biochemical pathways, ecological networks, phylogenetics, and extend beyond biomedicine into economics, social, and transportation sciences.</p>
                </sec>
                <sec>
                    <title>Conclusions</title>
                    <p>Compared to extant software, 
                        <italic toggle="yes">iplotx</italic> offers broader interoperability, richer styling, a large gallery of examples, and extensive code testing. This makes 
                        <italic toggle="yes">iplotx</italic> a robust choice for the visualisation of any networks and trees in biomedicine and beyond.</p>
                </sec>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>networks</kwd>
                <kwd>graphs</kwd>
                <kwd>trees</kwd>
                <kwd>visualisation</kwd>
                <kwd>phylogenetics</kwd>
                <kwd>plotting</kwd>
                <kwd>interactions.</kwd>
            </kwd-group>
            <funding-group>
                <funding-statement>The author(s) declared that no grants were involved in supporting this work.</funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec id="sec5" sec-type="intro">
            <title>Introduction</title>
            <p>Graphs or networks are widely used to encode relationships between entities including people (social networks), species (e.g. food networks, phylogenies), places (e.g. transportation networks) and domain-specific objects (e.g. gene regulatory networks). Network analysis is an important research field across scientific disciplines and supported by a number of software packages including 
                <italic toggle="yes">NetworkX</italic> (
                <xref ref-type="bibr" rid="ref8">Hagberg, Schult, and Swart 2008</xref>), 
                <italic toggle="yes">igraph</italic> (
                <xref ref-type="bibr" rid="ref1">Antonov et al. 2023</xref>), and 
                <italic toggle="yes">graph-tool
</italic> (
                <xref ref-type="bibr" rid="ref21">Peixoto 2017</xref>) in Python and 
                <italic toggle="yes">rigraph</italic> (
                <xref ref-type="bibr" rid="ref1">Antonov et al. 2023</xref>) and 
                <italic toggle="yes">statnet</italic> (
                <xref ref-type="bibr" rid="ref19">Pavel N. Krivitsky, Mark S. Handcock and Hunter, David R. and Butts, Carter T. and Bojanowski, Michal and Klumb, Chad and Goodreau, Steven M. and Morris, Martina 2003/2024</xref>) in R. Among all networks, trees are often used to represent hierarchical relationships, such as animal (
                <xref ref-type="bibr" rid="ref23">Redelings and Holder 2017</xref>) and viral evolution (
                <xref ref-type="bibr" rid="ref24">Sagulenko, Puller, and Neher 2018</xref>; 
                <xref ref-type="bibr" rid="ref4">Drummond and Rambaut 2007</xref>). Mature software libraries that focus on or include manipulation and analysis of trees include 
                <italic toggle="yes">cogent3</italic> (
                <xref ref-type="bibr" rid="ref11">Huttley et al. 2025</xref>), 
                <italic toggle="yes">dendropy</italic> (
                <xref ref-type="bibr" rid="ref18">Moreno, Holder, and Sukumaran 2024</xref>), Environment for Tree Exploration (
                <italic toggle="yes">ETE</italic>) (
                <xref ref-type="bibr" rid="ref9">Huerta-Cepas, Serra, and Bork 2016</xref>), 
                <italic toggle="yes">Biopython</italic> (
                <xref ref-type="bibr" rid="ref2">Cock et al. 2009</xref>), and 
                <italic toggle="yes">scikit-bio
</italic> (
                <xref ref-type="bibr" rid="ref28">Team 2020</xref>).</p>
            <p>The centrality of statistics notwithstanding, visualisation is an equally important tool to explore and understand a network&#x2019;s topology and other properties. As mathematical objects, networks and trees exist outside of geometric spaces, therefore their visualisation requires two steps: i) Embedding the network in either a two- or a three-dimensional space, and ii) Visualising the resulting layout in a way that facilitates interpretation of the network properties. Network analysis libraries already implement many layout algorithms (
                <xref ref-type="bibr" rid="ref1">Antonov et al. 2023</xref>; 
                <xref ref-type="bibr" rid="ref8">Hagberg, Schult, and Swart 2008</xref>; 
                <xref ref-type="bibr" rid="ref21">Peixoto 2017</xref>).</p>
            <p>Underscoring the importance of visualisation is the existence of domain-specific software that centers the entire workflow of network analysis and interpretation on a graphical user interface (GUI). Popular examples in this space include 
                <italic toggle="yes">Cytoscape</italic>, developed for biomolecular networks (
                <xref ref-type="bibr" rid="ref26">Shannon et al. 2003</xref>), 
                <italic toggle="yes">SocNetV</italic>, focused on social networks (
                <xref ref-type="bibr" rid="ref5">&#x201c;Free and Open-Source Tool for Social Network Analysis,&#x201d; n.d.</xref>), and 
                <italic toggle="yes">nextstrain</italic>, dedicated to pathogen evolution (
                <xref ref-type="bibr" rid="ref7">Hadfield et al. 2018</xref>).</p>
            <p>While visualisation functionality varies across these tools, they tend to fall into one of two categories. Some packages, including 
                <italic toggle="yes">NetworkX</italic>, 
                <italic toggle="yes">igraph</italic>, 
                <italic toggle="yes">cogent3</italic>, and 
                <italic toggle="yes">dendropy</italic> offer limited plot customisation and rely on standard plotting backends such as 
                <italic toggle="yes">Matplotlib</italic> (
                <xref ref-type="bibr" rid="ref10">Hunter 2007</xref>), 
                <italic toggle="yes">plotly</italic> (
                <xref ref-type="bibr" rid="ref22">Plotly Technologies Inc. 2015</xref>), and the terminal. Others, including 
                <italic toggle="yes">graph-tool (</italic>
                <xref ref-type="bibr" rid="ref21">

                    <italic toggle="yes">Peixoto 2017</italic>
                </xref>
                <italic toggle="yes">)</italic>, 
                <italic toggle="yes">Cytoscape</italic> (
                <xref ref-type="bibr" rid="ref26">Shannon et al. 2003</xref>), 
                <italic toggle="yes">SocNetV</italic> 
                <ext-link ext-link-type="uri" xlink:href="https://paperpile.com/c/DN0yeL/UskJ">(&#x201c;Free and Open-Source Tool for Social Network Analysis,&#x201d; n.d.)</ext-link> and 
                <italic toggle="yes">ETE</italic> (
                <xref ref-type="bibr" rid="ref9">Huerta-Cepas, Serra, and Bork 2016</xref>), offer a higher level of customisation but use non-interactive or custom rendering backends, which precludes interoperability with other chart types beyond the network itself.</p>
            <p>

                <italic toggle="yes">iplotx</italic> was developed to enable highly customisable network visualisation that is fully compatible with a generic plotting framework. By relying on a Matplotlib, it naturally supports animations, post-render editing, multiple output types (e.g. vector and raster files, interactive widgets), and compatibility with both Matplotlib features (e.g. other chart types, annotations, inset axes, colour bars) and a large library of third-party tools including seaborn (
                <xref ref-type="bibr" rid="ref30">Waskom et al. 2014</xref>) and scipy (
                <xref ref-type="bibr" rid="ref29">Virtanen et al. 2020</xref>). Unlike other tools, 
                <italic toggle="yes">iplotx</italic> accepts data from multiple input libraries (
                <italic toggle="yes">NetworkX</italic>, 
                <italic toggle="yes">igraph</italic>, 
                <italic toggle="yes">graph-tool
</italic>, 
                <italic toggle="yes">Biopython</italic>, 
                <italic toggle="yes">cogent3</italic>, 
                <italic toggle="yes">ETE4</italic>, 
                <italic toggle="yes">dendropy</italic>, and 
                <italic toggle="yes">scikit-bio
</italic>) and includes a mechanism to extend compatibility to any input data stream. Because of this universal compatibility, 
                <italic toggle="yes">iplotx</italic> guarantees identical visual appearance for networks and trees independent of how they were processed.</p>
        </sec>
        <sec id="sec6" sec-type="methods">
            <title>Methods</title>
            <sec id="sec7">
                <title>Implementation</title>
                <p>

                    <italic toggle="yes">iplotx</italic> follows best practices in free open-source software development. The codebase is versioned on GitHub has a stable API. Documentation (
                    <ext-link ext-link-type="uri" xlink:href="https://iplotx.readthedocs.io">https://iplotx.readthedocs.io</ext-link>) includes a reference library, a gallery of about 90 examples, and installation instructions. Code integrity is verified via continuous integration/development (CI/CD) pipelines and 232 unit tests covering &gt;90% of the codebase. Code formatting tools and pre-commit hooks ensure high readability. User and contributor interactions take place online transparently and respectfully.</p>
                <p>Technically, the library leverages custom Matplotlib artists (
                    <xref ref-type="bibr" rid="ref10">Hunter 2007</xref>) to ensure a coherent appearance of nodes, edges, and other element types upon transformations (e.g. zoom, pan, different Density Per Inch (DPI) settings, animations). Two sets of coordinate transforms are used throughout the codebase: (i) Data units to define the location of the node centers and other artists&#x2019; properties, and (ii) Figure units to define node size, edge width, and similar &#x201c;scale-free&#x201d; properties. This dual coordinate system is consistent with the behaviour of general charting libraries which maintain marker size upon zoom.</p>
            </sec>
            <sec id="sec8">
                <title>Operation</title>
                <p>Installation is achieved via the standard PyPI repository: detailed instructions available on the website. The software package supports Python 3.10 or later and any platform covered by its dependencies, namely Matplotlib and pandas, which includes Linux, MacOS, and Windows. The package is imported as a Python module and used mainly via its 
                    <italic toggle="yes">iplotx.network</italic> and 
                    <italic toggle="yes">iplotx.tree</italic> functions. 
                    <italic toggle="yes">iplotx</italic> autodiscovers network analysis libraries at runtime and provisions input data providers based on the user&#x2019;s specific installation. For example, if a user&#x2019;s installation includes 
                    <italic toggle="yes">igraph</italic> but not 
                    <italic toggle="yes">NetworkX</italic>, 
                    <italic toggle="yes">iplotx</italic> will automatically activate the corresponding input data stream: no user input is required.</p>
            </sec>
        </sec>
        <sec id="sec9" sec-type="results">
            <title>Results</title>
            <sec id="sec10">
                <title>Efficient, universal middleware between network analysis and rendering</title>
                <p>Network visualisation sits between network analysis and graphical rendering onto paper or screen. The goal of 
                    <italic toggle="yes">iplotx</italic> is to unify this intermediate stage for the Python ecosystem (
                    <xref ref-type="fig" rid="f1">
Figure 1A</xref>). For this purpose, 
                    <italic toggle="yes">iplotx</italic> was designed to accept input from multiple (currently eight) network and tree analysis libraries (
                    <xref ref-type="bibr" rid="ref1">Antonov et al. 2023</xref>; 
                    <xref ref-type="bibr" rid="ref8">Hagberg, Schult, and Swart 2008</xref>; 
                    <xref ref-type="bibr" rid="ref14">McArthur et al. 2025</xref>; 
                    <xref ref-type="bibr" rid="ref28">Team 2020</xref>; 
                    <xref ref-type="bibr" rid="ref9">Huerta-Cepas, Serra, and Bork 2016</xref>; 
                    <xref ref-type="bibr" rid="ref2">Cock et al. 2009</xref>). 
                    <italic toggle="yes">iplotx</italic> also implements simple network and tree data structures for users seeking to minimise external package dependencies. A separate mechanism enables external developers to add compatibility with 
                    <italic toggle="yes">iplotx</italic> to their own package. Internally, data from all input providers is represented in the same exact way, guaranteeing the same visual output independently of the input stream (
                    <xref ref-type="fig" rid="f1">
Figure 1B</xref>).</p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>
Figure 1. </label>
                    <caption>
                        <title>Overview of 
                            <italic toggle="yes">iplotx&#x2019;s</italic> scope.</title>
                        <p>

                            <bold>A)</bold> Schematic representation of network visualisation workflows with 
                            <italic toggle="yes">iplotx</italic> as a universal intermediate stage between network/tree analysis libraries [REFs] and the Matplotlib rendering backend [REF]. 
                            <bold>B)</bold> Simple example of a network visualisation from two distinct libraries through 
                            <italic toggle="yes">iplotx</italic>, which guarantees identical appearance independent of the data provider. 
                            <bold>C)</bold> Runtime scalability for Erd&#x0151;s&#x2013;R&#x00e9;nyi graphs with varying number of nodes (n) and edges (m). Black stars indicate graphs with twice as many edges as nodes. All computations were performed on a consumer laptop (Dell Latitude 7440) and ran for less than a minute.</p>
                    </caption>
                    <graphic id="gr1" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/190914/6d34405f-240d-432b-8c00-4ac5e896d7f1_figure1.gif"/>
                </fig>
                <p>Consistent output on multiple rendering backends was achieved through tight integration with 
                    <italic toggle="yes">Matplotlib</italic> (
                    <xref ref-type="bibr" rid="ref10">Hunter 2007</xref>), a popular library for data plotting that can export charts into multiple image formats (e.g. PNG, SVG) but also offers interactive renderers such as Tkinter, Qt, and GTK, which react to mouse and keyboard events and can be animated (
                    <xref ref-type="fig" rid="f1">
Figure 1A</xref>). 
                    <italic toggle="yes">iplotx</italic> objects can be combined with other artists such as bar, line, and scatter plots, images, and inset axes.</p>
                <p>

                    <italic toggle="yes">N</italic>etworks with hundreds of thousands of nodes and edges can be visualised within seconds on a consumer laptop (
                    <xref ref-type="fig" rid="f1">
Figure 1C</xref>). Empirical tests confirm the expected runtime complexity as 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>O</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>(</mml:mo>
                            <mml:mrow>
                                <mml:mi>n</mml:mi>
                                <mml:mo>+</mml:mo>
                                <mml:mi>m</mml:mi>
                            </mml:mrow>
                            <mml:mo>)</mml:mo>
                        </mml:math>
</inline-formula> where 
                    <italic toggle="yes">n</italic> and 
                    <italic toggle="yes">m</italic> are the number of nodes and edges: the backend needs to render vertices and edges individually. This level of efficiency is abundantly sufficient for many practical applications and can be further improved by strategic user choices (e.g. visualising a subset of or no edges). Examples of practical applications are given below.</p>
            </sec>
            <sec id="sec11">
                <title>Simple yet expressive styling of networks and trees</title>
                <p>

                    <italic toggle="yes">iplotx</italic> was designed around a declarative styling grammar that covers all elements types of the visualisation including vertices, edges, arrows, loops, and labels (
                    <xref ref-type="fig" rid="f2">
Figure 2A</xref>). The appearance of each element type can be customised in multiple ways. For example, edge geometry for a simple network with two nodes can follow a straight line, a circular arc, Bezier control points, specified incidence angles (called &#x201c;ports&#x201d; in 
                    <italic toggle="yes">graphviz</italic> (
                    <xref ref-type="bibr" rid="ref6">Gansner and North 2000</xref>)), or waypoints (
                    <xref ref-type="fig" rid="f2">
Figure 2B</xref>). Furthermore, each element type can be specified either globally or on a per-element basis. For instance, one could set a global vertex colour and size but distinct colour and curvature for each edge (
                    <xref ref-type="fig" rid="f2">
Figure 2C</xref>). A library of default styles is maintained for rapid prototyping and can be used as a basis for further customisation. A complete style format specification that includes all possible style options is part of the public documentation.</p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>
Figure 2. </label>
                    <caption>
                        <title>Style grammar and features.</title>
                        <p>

                            <bold>A)</bold> Style grammar for network visualisations. 
                            <bold>B)</bold> Edge geometry grammar. 
                            <bold>C)</bold>
 Example of global (e.g. vertex colour) and per-element styling (e.g. edge colour and curvature). 
                            <bold>D)</bold> Vertex clustering visualisation. 
                            <bold>E)</bold> Three dimensional visualisation with depth shading. 
                            <bold>F)</bold> Quantitative edge colouring with colour bar. 
                            <bold>G)</bold> Combination of network plot with 
                            <italic toggle="yes">scipy</italic>&#x2019;s Voronoi tassellation [REF]. 
                            <bold>H)</bold> Cascading patches on a radial tree. 
                            <bold>I)</bold> Split edge styling on a rectangular tree. 
                            <bold>J)</bold> Dual tree visualisation with links between the leaves.</p>
                    </caption>
                    <graphic id="gr2" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/190914/6d34405f-240d-432b-8c00-4ac5e896d7f1_figure2.gif"/>
                </fig>
                <p>

                    <italic toggle="yes">iplotx</italic> also includes features that are either unique or found in distinct subsets of other packages. That includes - but is not limited to - graph clusterings and covers a la 
                    <italic toggle="yes">igraph</italic> (
                    <xref ref-type="fig" rid="f2">
Figure 2D</xref>), three-dimensional visualisations with node and edge depth shading (
                    <xref ref-type="fig" rid="f2">
Figure 2E</xref>), and quantitative element colouring via a colour map (
                    <xref ref-type="fig" rid="f2">
Figure 2F</xref>, similar to but easier to use than 
                    <italic toggle="yes">NetworkX</italic>&#x2019;s functionality). Moreover, 
                    <italic toggle="yes">iplotx</italic> visualisations are compatible with other packages within the Matplotlib framework including seaborn for statistical data (
                    <xref ref-type="bibr" rid="ref30">Waskom et al. 2014</xref>), pandas for tabular data (
                    <xref ref-type="bibr" rid="ref15">McKinney 2011</xref>), scipy for scientific data (
                    <xref ref-type="bibr" rid="ref29">Virtanen et al. 2020</xref>), and Cartopy for geolocation data (
                    <xref ref-type="bibr" rid="ref16">Met Office 2010 - 2015</xref>). As an example, network visualisations can be combined with 
                    <italic toggle="yes">scipy</italic>&#x2019;s Voronoi tassellation functionality (
                    <xref ref-type="fig" rid="f2">
Figure 2G</xref>). Tree visualisations also support dedicated features, among others: cascading patches for subtrees (
                    <xref ref-type="fig" rid="f2">
Figure 2H</xref>), split-edge styles (
                    <xref ref-type="fig" rid="f2">
Figure 2I</xref>), and a specialty function for pairs of trees facing each other, a common need in coevolutionary studies (
                    <xref ref-type="fig" rid="f2">
Figure 2J</xref>). For both networks and trees, 
                    <italic toggle="yes">iplotx</italic> also supports animations, post-render artist editing, and interaction via callback functions.</p>
                <p>Crucially, by virtue of accepting many kinds of live objects as input (
                    <xref ref-type="fig" rid="f1">
Figure 1A</xref>), 
                    <italic toggle="yes">iplotx</italic> makes 
                    <italic toggle="yes">all</italic> features available to 
                    <italic toggle="yes">all</italic> packages.</p>
            </sec>
        </sec>
        <sec id="sec12">
            <title>Use cases</title>
            <p>Given that networks are widely used across scientific disciplines, a large gallery of examples specific for individual fields was created. In addition to classic examples from network science such as Donald Knuth&#x2019;s map of US cities (
                <xref ref-type="fig" rid="f3">
Figure 3A</xref>) (
                <xref ref-type="bibr" rid="ref13">Knuth 1993</xref>), it includes molecular ecological networks (
                <xref ref-type="fig" rid="f3">
Figure 3B</xref>) (
                <xref ref-type="bibr" rid="ref17">Meyer et al. 2020</xref>), economic networks between financial institutions (
                <xref ref-type="fig" rid="f3">
Figure 3C</xref>) (
                <xref ref-type="bibr" rid="ref25">Schweitzer et al. 2009</xref>), protein-protein interaction networks within bacteria (
                <xref ref-type="fig" rid="f3">
Figure 3D</xref>) and in cancer (
                <xref ref-type="fig" rid="f3">
Figure 3E</xref>) (
                <xref ref-type="bibr" rid="ref27">Szklarczyk et al. 2023</xref>), models for foraging networks in primates (
                <xref ref-type="fig" rid="f3">
Figure 3F</xref>) (De 
                <xref ref-type="bibr" rid="ref3">la Fuente et al. 2022</xref>), diagrams for biochemical reaction chains (
                <xref ref-type="fig" rid="f3">
Figure 3G</xref>) (
                <xref ref-type="bibr" rid="ref12">Kanehisa and Goto 2000</xref>), social network tutorials from 
                <italic toggle="yes">SocNetV</italic> (
                <xref ref-type="fig" rid="f3">
Figure 3H</xref>) 
                <ext-link ext-link-type="uri" xlink:href="https://paperpile.com/c/DN0yeL/UskJ">(&#x201c;Free and Open-Source Tool for Social Network Analysis,&#x201d; n.d.)</ext-link>, conceptual charts for train lines and stations (
                <xref ref-type="fig" rid="f3">
Figure 3I</xref>), and geographic maps with non-Cartesian geometries (
                <xref ref-type="fig" rid="f3">
Figure 3J</xref>) (
                <xref ref-type="bibr" rid="ref16">Met Office 2010 - 2015</xref>). Moreover, because of its tight integration with Matplotlib, 
                <italic toggle="yes">iplotx</italic>&#x2019;s visualisation can be used to encode generic quantitative data, extending all styling options to any chart type (
                <xref ref-type="fig" rid="f3">
Figure 3K</xref>).</p>
            <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                <label>
Figure 3. </label>
                <caption>
                    <title>Applications across disciplines.</title>
                    <p>

                        <bold>A)</bold> Knuth&#x2019;s network of distances between US cities, a classic example of network visualisation (
                        <xref ref-type="bibr" rid="ref13">Knuth 1993</xref>). 
                        <bold>B)</bold> Molecular ecological network of food sources (
                        <xref ref-type="bibr" rid="ref17">Meyer et al. 2020</xref>). 
                        <bold>C)</bold> Visualisation of a network of financial institutions (
                        <xref ref-type="bibr" rid="ref25">Schweitzer et al. 2009</xref>). 
                        <bold>D)</bold> Protein-protein interaction network in 
                        <italic toggle="yes">Escherichia coli</italic> from the STRING database, with nodes (protein) coloured by their degree (
                        <xref ref-type="bibr" rid="ref27">Szklarczyk et al. 2023</xref>). 
                        <bold>E)</bold> Protein-protein interaction network of breast cancer genes (
                        <xref ref-type="bibr" rid="ref27">Szklarczyk et al. 2023</xref>). 
                        <bold>F)</bold> Foraging strategy models in a cooperatively breeding primate (De 
                        <xref ref-type="bibr" rid="ref3">la Fuente et al. 2022</xref>). 
                        <bold>G)</bold> Central part of the citric acid cycle that underpins cellular respiration (
                        <xref ref-type="bibr" rid="ref12">Kanehisa and Goto 2000</xref>). 
                        <bold>H)</bold> Example of social network from 
                        <italic toggle="yes">SocNetV</italic> 
                        <ext-link ext-link-type="uri" xlink:href="https://paperpile.com/c/DN0yeL/UskJ">(&#x201c;Free and Open-Source Tool for Social Network Analysis,&#x201d; n.d</ext-link>.). 
                        <bold>I)</bold> Example of a transportation network diagram with three train lines. 
                        <bold>J)</bold> Network of African cities onto a Cartopy geographic projection (
                        <xref ref-type="bibr" rid="ref16">Met Office 2010 - 2015</xref>). 
                        <bold>K)</bold> Example of an 
                        <italic toggle="yes">iplotx</italic> network visualisation interpreted as a quantitative data chart.</p>
                </caption>
                <graphic id="gr3" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/190914/6d34405f-240d-432b-8c00-4ac5e896d7f1_figure3.gif"/>
            </fig>
        </sec>
        <sec id="sec13" sec-type="discussion">
            <title>Discussion</title>
            <p>The landscape of network and tree analysis software tools is rich and diverse, catering to different types of users that require speed (
                <xref ref-type="bibr" rid="ref1">Antonov et al. 2023</xref>), a simple programmatic interface (
                <xref ref-type="bibr" rid="ref8">Hagberg, Schult, and Swart 2008</xref>), or complex GUIs (
                <xref ref-type="bibr" rid="ref26">Shannon et al. 2003</xref>). This diversity, however, also causes feature and format fragmentation. 
                <italic toggle="yes">iplotx</italic> is a direct attempt to counter this phenomenon and thereby equip many existing network and tree analysis packages with a powerful visualisation toolkit.</p>
            <p>While this package focuses on Python, 
                <italic toggle="yes">ggraph</italic> follows similar principles in R (
                <xref ref-type="bibr" rid="ref20">Pedersen 2025</xref>), in particular the consideration of analysis, layout, and visualisation of networks as distinct tasks. Compared to 
                <italic toggle="yes">ggraph</italic>, 
                <italic toggle="yes">iplotx</italic> includes some additional features such as three-dimensional visualisations, internal styles, a library of arrow and vertex shapes, and dedicated tree features such as cascades and layouts. 
                <italic toggle="yes">Ggtree</italic> is an R library that specialises in tree layout and visualisation (
                <xref ref-type="bibr" rid="ref31">Yu et al. 2017</xref>) and does not support general networks. Unlike 
                <italic toggle="yes">ggtree</italic>, 
                <italic toggle="yes">iplotx</italic> does not include any functions to directly read trees or network statically stored in files or the web. This is a design choice as many of the tree analysis libraries include parsers for many file formats already (
                <xref ref-type="bibr" rid="ref11">Huttley et al. 2025</xref>; 
                <xref ref-type="bibr" rid="ref9">Huerta-Cepas, Serra, and Bork 2016</xref>; 
                <xref ref-type="bibr" rid="ref2">Cock et al. 2009</xref>; 
                <xref ref-type="bibr" rid="ref28">Team 2020</xref>; 
                <xref ref-type="bibr" rid="ref18">Moreno, Holder, and Sukumaran 2024</xref>) and there is no reason for 
                <italic toggle="yes">iplotx</italic> to duplicate this functionality.</p>
            <p>The central tenet of 
                <italic toggle="yes">iplotx</italic>, to democratise rich customisation options to 
                <italic toggle="yes">all</italic> input packages, also represents a form of architectural robustness. Whether or not each individual analysis package is maintained in the future, users will be able to build network visualisations with the exact same appearance via another package. At the same time, reliance on a high-level rendering backend - Matplotlib (
                <xref ref-type="bibr" rid="ref10">Hunter 2007</xref>) - greatly expands the compatibility of the visualisations with dozens of other packages that use the same framework (e.g. (
                <xref ref-type="bibr" rid="ref30">Waskom et al. 2014</xref>; 
                <xref ref-type="bibr" rid="ref29">Virtanen et al. 2020</xref>)). This design choice, which echoes 
                <italic toggle="yes">ggraph</italic> (
                <xref ref-type="bibr" rid="ref20">Pedersen 2025</xref>) but differs from other packages (
                <xref ref-type="bibr" rid="ref9">Huerta-Cepas, Serra, and Bork 2016</xref>; 
                <xref ref-type="bibr" rid="ref21">Peixoto 2017</xref>), facilitates onboarding for a majority of users unfamiliar with low-lever renderers such as Cairo and GTK.</p>
            <p>In conclusion, 
                <italic toggle="yes">iplotx</italic> is a universal network and tree visualisation framework that democratises a large set of styling options to all network analysis packages in Python.</p>
        </sec>
        <sec id="sec14">
            <title>Software availability statement</title>
            <p>Source code available from: 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/fabilab/iplotx">https://github.com/fabilab/iplotx</ext-link>.</p>
            <p>Archived software available from: 
                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.17585402">https://doi.org/10.5281/zenodo.17585402</ext-link>.</p>
            <p>(
                <xref ref-type="bibr" rid="ref32">Fabio Zanini, &amp; Matthew Andres Moreno. (2025)</xref>. fabilab/iplotx: v1.5.1 (1.5.1). Zenodo.)</p>
            <p>License: MIT.</p>
        </sec>
    </body>
    <back>
        <ack>
            <title>Acknowledgements</title>
            <p>I would like to thank Thomas Caswell (
                <italic toggle="yes">Matplotlib</italic>), Dan Schult and the 
                <italic toggle="yes">NetworkX</italic> development team, Tam&#x00e1;s Nepusz and Vincent Traag (
                <italic toggle="yes">igraph</italic>), Gavin Huttley (
                <italic toggle="yes">cogent3</italic>), and Peter Cock (
                <italic toggle="yes">Biopython</italic>) for scientific discussions and design suggestions. 
                <italic toggle="yes">iplotx</italic> was initially designed during a short residency at CIBIO, University of Trento, Italy graciously hosted by Maria Caterina Mione and Nicola Segata.</p>
        </ack>
        <ref-list>
            <title>References</title>
            <ref id="ref1">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Antonov</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cs&#x00e1;rdi</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Horv&#x00e1;t</surname>
                            <given-names>S</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Igraph Enables Fast and Robust Network Analysis across Programming Languages.</article-title>
                    <source>

                        <italic toggle="yes">arXiv [cs.SI]. arXiv.</italic>
</source>
                    <year>2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://arxiv.org/abs/2311.10260">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref2">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Cock</surname>
                            <given-names>PJA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Antao</surname>
                            <given-names>T</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chang</surname>
                            <given-names>JT</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Biopython: Freely Available Python Tools for Computational Molecular Biology and Bioinformatics.</article-title>
                    <source>

                        <italic toggle="yes">Bioinformatics.</italic>
</source>
                    <year>2009</year>;<volume>25</volume>(<issue>11</issue>):<fpage>1422</fpage>&#x2013;<lpage>1423</lpage>.
                    <pub-id pub-id-type="pmid">19304878</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/btp163</pub-id>
                    <pub-id pub-id-type="pmcid">PMC2682512</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref3">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Fuente</surname>
                            <given-names>D</given-names>
                            <prefix>la</prefix>
                        </name>

                        <name name-style="western">
                            <surname>Fernanda</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sueur</surname>
                            <given-names>C</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Foraging Networks and Social Tolerance in a Cooperatively Breeding Primate (Callithrix Jacchus).</article-title>
                    <source>

                        <italic toggle="yes">J. Anim. Ecol.</italic>
</source>
                    <year>2022</year>;<volume>91</volume>(<issue>1</issue>):<fpage>138</fpage>&#x2013;<lpage>153</lpage>.
                    <pub-id pub-id-type="pmid">34655252</pub-id>
                    <pub-id pub-id-type="doi">10.1111/1365-2656.13609</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref4">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Drummond</surname>
                            <given-names>AJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Rambaut</surname>
                            <given-names>A</given-names>
                        </name>
</person-group>:
                    <article-title>BEAST: Bayesian Evolutionary Analysis by Sampling Trees.</article-title>
                    <source>

                        <italic toggle="yes">BMC Evol. Biol.</italic>
</source>
                    <year>2007</year>;<volume>7</volume>(<issue>1</issue>):<fpage>214</fpage>.
                    <pub-id pub-id-type="pmid">17996036</pub-id>
                    <pub-id pub-id-type="doi">10.1186/1471-2148-7-214</pub-id>
                    <pub-id pub-id-type="pmcid">PMC2247476</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref5">
                <mixed-citation publication-type="other">
                    <collab>Free and Open-Source Tool for Social Network Analysis</collab>:
                    <article-title>Social Network Visualizer.</article-title>
                    <year>n.d.</year>Accessed October 30, 2025.
                    <ext-link ext-link-type="uri" xlink:href="https://socnetv.org/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref6">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gansner</surname>
                            <given-names>ER</given-names>
                        </name>

                        <name name-style="western">
                            <surname>North</surname>
                            <given-names>SC</given-names>
                        </name>
</person-group>:
                    <article-title>An Open Graph Visualization System and Its Applications to Software Engineering.</article-title>
                    <source>

                        <italic toggle="yes">Softw. Pract. Experience.</italic>
</source>
                    <year>2000</year>;<volume>30</volume>(<issue>11</issue>):<fpage>1203</fpage>&#x2013;<lpage>1233</lpage>.</mixed-citation>
            </ref>
            <ref id="ref7">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hadfield</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Megill</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bell</surname>
                            <given-names>SM</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Nextstrain: Real-Time Tracking of Pathogen Evolution.</article-title>
                    <source>

                        <italic toggle="yes">Bioinformatics.</italic>
</source>
                    <year>2018</year>;<volume>34</volume>(<issue>23</issue>):<fpage>4121</fpage>&#x2013;<lpage>4123</lpage>.
                    <pub-id pub-id-type="pmid">29790939</pub-id>
                    <pub-id pub-id-type="doi">10.1093/bioinformatics/bty407</pub-id>
                    <pub-id pub-id-type="pmcid">PMC6247931</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref8">
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hagberg</surname>
                            <given-names>AA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Schult</surname>
                            <given-names>DA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Swart</surname>
                            <given-names>PJ</given-names>
                        </name>
</person-group>:
                    <chapter-title>Exploring Network Structure, Dynamics, and Function Using NetworkX.</chapter-title>
                    <source>

                        <italic toggle="yes">Proceedings of the Python in Science Conference.</italic>
</source>
                    <publisher-name>SciPy</publisher-name>;<year>2008</year>;<fpage>11</fpage>&#x2013;<lpage>15</lpage>.</mixed-citation>
            </ref>
            <ref id="ref9">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Huerta-Cepas</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Serra</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bork</surname>
                            <given-names>P</given-names>
                        </name>
</person-group>:
                    <article-title>ETE 3: Reconstruction, Analysis, and Visualization of Phylogenomic Data.</article-title>
                    <source>

                        <italic toggle="yes">Mol. Biol. Evol.</italic>
</source>
                    <year>2016</year>;<volume>33</volume>(<issue>6</issue>):<fpage>1635</fpage>&#x2013;<lpage>1638</lpage>.
                    <pub-id pub-id-type="pmid">26921390</pub-id>
                    <pub-id pub-id-type="doi">10.1093/molbev/msw046</pub-id>
                    <pub-id pub-id-type="pmcid">PMC4868116</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref10">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hunter</surname>
                            <given-names>JD</given-names>
                        </name>
</person-group>:
                    <article-title>Matplotlib: A 2D Graphics Environment.</article-title>
                    <source>

                        <italic toggle="yes">Computing in Science &amp; Engineering.</italic>
</source>
                    <year>2007</year>;<volume>9</volume>(<issue>3</issue>):<fpage>90</fpage>&#x2013;<lpage>95</lpage>.
                    <pub-id pub-id-type="doi">10.1109/MCSE.2007.55</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref11">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Huttley</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Caley</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Nick-Foto</surname>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>cogent3/cogent3: REL: 2025.7.10a5.</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2025</year>.
                    <pub-id pub-id-type="doi">10.5281/ZENODO.16519079</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref12">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Kanehisa</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Goto</surname>
                            <given-names>S</given-names>
                        </name>
</person-group>:
                    <article-title>KEGG: Kyoto Encyclopedia of Genes and Genomes.</article-title>
                    <source>

                        <italic toggle="yes">Nucleic Acids Res.</italic>
</source>
                    <year>2000</year>;<volume>28</volume>(<issue>1</issue>):<fpage>27</fpage>&#x2013;<lpage>30</lpage>.
                    <pub-id pub-id-type="pmid">10592173</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/28.1.27</pub-id>
                    <pub-id pub-id-type="pmcid">PMC102409</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref13">
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Knuth</surname>
                            <given-names>DE</given-names>
                        </name>
</person-group>:
                    <source>

                        <italic toggle="yes">The Stanford GraphBase: A Platform for Combinatorial Computing.</italic>
</source>
                    <publisher-loc>New York, NY</publisher-loc>:
                    <publisher-name>Association for Computing Machinery</publisher-name>;<year>1993</year>.</mixed-citation>
            </ref>
            <ref id="ref14">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>McArthur</surname>
                            <given-names>RN</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wong</surname>
                            <given-names>TK-F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Lang</surname>
                            <given-names>Y</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Piqtree: A Python Package for Seamless Phylogenetic Inference with IQ-TREE.</article-title>
                    <source>

                        <italic toggle="yes">bioRxiv.</italic>
</source>
                    <year>2025</year>.
                    <pub-id pub-id-type="doi">10.1101/2025.07.13.664626</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref15">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>McKinney</surname>
                            <given-names>W</given-names>
                        </name>
</person-group>:
                    <article-title>Pandas: A Foundational Python Library for Data Analysis and Statistics. </article-title>
                    <year>2011</year>.</mixed-citation>
            </ref>
            <ref id="ref16">
                <mixed-citation publication-type="other">
                    <collab>Met Office</collab>:
                    <source>

                        <italic toggle="yes">Cartopy: A Cartographic Python Library with a Matplotlib Interface.</italic>
</source>
                    <publisher-loc>Exeter, Devon</publisher-loc>:<year>2010 - 2015</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://scitools.org.uk/cartopy">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref17">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Meyer</surname>
                            <given-names>JM</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Leempoel</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Losapio</surname>
                            <given-names>G</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Molecular Ecological Network Analyses: An Effective Conservation Tool for the Assessment of Biodiversity, Trophic Interactions, and Community Structure.</article-title>
                    <source>

                        <italic toggle="yes">Front. Ecol. Evol.</italic>
</source>
                    <year>2020</year>;<volume>8</volume>(<issue>November</issue>):<fpage>588430</fpage>.
                    <pub-id pub-id-type="doi">10.3389/fevo.2020.588430</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref18">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Moreno</surname>
                            <given-names>MA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Holder</surname>
                            <given-names>MT</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sukumaran</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>DendroPy 5: A Mature Python Library for Phylogenetic Computing.</article-title>
                    <source>

                        <italic toggle="yes">Journal of Open Source Software.</italic>
</source>
                    <year>2024</year>;<volume>9</volume>(<issue>101</issue>):<fpage>6943</fpage>.
                    <pub-id pub-id-type="doi">10.21105/joss.06943</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref19">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Krivitsky</surname>
                            <given-names>PN</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Handcock</surname>
                            <given-names>MS</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hunter</surname>
                            <given-names>DR</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Statnet: Tools for the Statistical Modeling of Network Data. </article-title>
                    <year>2003/2024</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://statnet.org">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref20">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Pedersen</surname>
                            <given-names>TL</given-names>
                        </name>
</person-group>:
                    <article-title>Ggraph.</article-title>
                    <year>2025</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://ggraph.data-imaginist.com/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref21">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Peixoto</surname>
                            <given-names>TP</given-names>
                        </name>
</person-group>:
                    <article-title>The Graph-Tool Python Library.</article-title>
                    <year>2017</year>.
                    <pub-id pub-id-type="doi">10.6084/m9.figshare.1164194.v14</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref22">
                <mixed-citation publication-type="book">
                    <collab>Plotly Technologies Inc</collab>:
                    <chapter-title>Collaborative Data Science.</chapter-title>
                    <source>

                        <italic toggle="yes">Collaborative Data Science.</italic>
</source>
                    <publisher-loc>Montr&#x00e9;al, QC</publisher-loc>:
                    <publisher-name>Plotly Technologies Inc.</publisher-name>;<year>2015</year>;<volume>2015</volume>.
                    <ext-link ext-link-type="uri" xlink:href="https://plot.ly">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref23">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Redelings</surname>
                            <given-names>BD</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Holder</surname>
                            <given-names>MT</given-names>
                        </name>
</person-group>:
                    <article-title>A Supertree Pipeline for Summarizing Phylogenetic and Taxonomic Information for Millions of Species.</article-title>
                    <source>

                        <italic toggle="yes">PeerJ.</italic>
</source>
                    <year>2017</year>;<volume>5</volume>(<issue>March</issue>):<fpage>e3058</fpage>.
                    <pub-id pub-id-type="pmid">28265520</pub-id>
                    <pub-id pub-id-type="doi">10.7717/peerj.3058</pub-id>
                    <pub-id pub-id-type="pmcid">PMC5335690</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref24">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sagulenko</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Puller</surname>
                            <given-names>V</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Neher</surname>
                            <given-names>RA</given-names>
                        </name>
</person-group>:
                    <article-title>TreeTime: Maximum-Likelihood Phylodynamic Analysis.</article-title>
                    <source>

                        <italic toggle="yes">Virus Evolution.</italic>
</source>
                    <year>2018</year>;<volume>4</volume>(<issue>1</issue>):<fpage>vex042</fpage>.
                    <pub-id pub-id-type="pmid">29340210</pub-id>
                    <pub-id pub-id-type="doi">10.1093/ve/vex042</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref25">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Schweitzer</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Fagiolo</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sornette</surname>
                            <given-names>D</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Economic Networks: The New Challenges.</article-title>
                    <source>

                        <italic toggle="yes">Science (New York, N.Y.).</italic>
</source>
                    <year>2009</year>;<volume>325</volume>(<issue>5939</issue>):<fpage>422</fpage>&#x2013;<lpage>425</lpage>.
                    <pub-id pub-id-type="doi">10.1126/science.1173644</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref26">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Shannon</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Markiel</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ozier</surname>
                            <given-names>O</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Cytoscape: A Software Environment for Integrated Models of Biomolecular Interaction Networks.</article-title>
                    <source>

                        <italic toggle="yes">Genome Res.</italic>
</source>
                    <year>2003</year>;<volume>13</volume>(<issue>11</issue>):<fpage>2498</fpage>&#x2013;<lpage>2504</lpage>.
                    <pub-id pub-id-type="pmid">14597658</pub-id>
                    <pub-id pub-id-type="doi">10.1101/gr.1239303</pub-id>
                    <pub-id pub-id-type="pmcid">PMC403769</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref27">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Szklarczyk</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kirsch</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Koutrouli</surname>
                            <given-names>M</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>The STRING Database in 2023: Protein-Protein Association Networks and Functional Enrichment Analyses for Any Sequenced Genome of Interest.</article-title>
                    <source>

                        <italic toggle="yes">Nucleic Acids Res.</italic>
</source>
                    <year>2023</year>;<volume>51</volume>(<issue>D1</issue>):<fpage>D638</fpage>&#x2013;<lpage>D646</lpage>.
                    <pub-id pub-id-type="pmid">36370105</pub-id>
                    <pub-id pub-id-type="doi">10.1093/nar/gkac1000</pub-id>
                    <pub-id pub-id-type="pmcid">PMC9825434</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref28">
                <mixed-citation publication-type="other">
                    <collab>Team, The Scikit-Bio Development</collab>:
                    <article-title>Scikit-Bio: A Bioinformatics Library for Data Scientists, Students, and Developers (version 0.5.5).</article-title>
                    <year>2020</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://scikit-bio.org">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref29">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Virtanen</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gommers</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Oliphant</surname>
                            <given-names>TE</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python.</article-title>
                    <source>

                        <italic toggle="yes">Nat. Methods.</italic>
</source>
                    <year>2020</year>;<volume>17</volume>(<issue>3</issue>):<fpage>261</fpage>&#x2013;<lpage>272</lpage>.
                    <pub-id pub-id-type="pmid">32015543</pub-id>
                    <pub-id pub-id-type="doi">10.1038/s41592-019-0686-2</pub-id>
                    <pub-id pub-id-type="pmcid">PMC7056644</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref30">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Waskom</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Botvinnik</surname>
                            <given-names>O</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hobson</surname>
                            <given-names>P</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Seaborn: v0.5.0 (November 2014).</article-title>
                    <year>2014</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.12710</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref31">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Yu</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Smith</surname>
                            <given-names>DK</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Zhu</surname>
                            <given-names>H</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Ggtree: An R Package for Visualization and Annotation of Phylogenetic Trees with Their Covariates and Other Associated Data.</article-title>
                    <source>

                        <italic toggle="yes">Methods Ecol. Evol.</italic>
</source>
                    <year>2017</year>;<volume>8</volume>(<issue>1</issue>):<fpage>28</fpage>&#x2013;<lpage>36</lpage>.
                    <pub-id pub-id-type="doi">10.1111/2041-210X.12628</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref32">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Zanini</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Moreno</surname>
                            <given-names>MA</given-names>
                        </name>
</person-group>:
                    <article-title>fabilab/iplotx: v1.5.1 (1.5.1).</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2025</year>.</mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report445964">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.190914.r445964</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Vel&#x00e1;squez-Zapata</surname>
                        <given-names>Valeria</given-names>
                    </name>
                    <xref ref-type="aff" rid="r445964a1">1</xref>
                    <role>Referee</role>
                </contrib>
                <aff id="r445964a1">
                    <label>1</label>GreenLight Biosciences, Durham, NC, USA</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>26</day>
                <month>2</month>
                <year>2026</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2026 Vel&#x00e1;squez-Zapata V</copyright-statement>
                <copyright-year>2026</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport445964" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.173131.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>This article presents iplotx, a universal Python package designed to provide visualization of networks and trees compatible with several libraries. The rationale for the software are clearly explained, addressing a real need for interoperability and customizability that existing tools lack. The paper thoroughly documents the design choices, integrations, and support for a broad range of input formats and outputs. Performance benchmarks and extensive examples across diverse scientific domains. The author shows that iplotx can deliver identical visualizations regardless of input source. The demonstration of scalability and cross-discipline applicability reinforce the claim that iplotx is a robust and broadly useful solution. When checking for software sources and documentation, I could verify the resources offer a aseries of examples for network visualization and on how to install and use the tool. Overall, the article is well written and the software a valuable addition to the Python ecosystem for network visualization.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>BIoinformatics</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report451458">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.190914.r451458</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Tyson</surname>
                        <given-names>Adam L</given-names>
                    </name>
                    <xref ref-type="aff" rid="r451458a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-3225-1130</uri>
                </contrib>
                <aff id="r451458a1">
                    <label>1</label>University College London, London, UK</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>3</day>
                <month>2</month>
                <year>2026</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2026 Tyson AL</copyright-statement>
                <copyright-year>2026</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport451458" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.173131.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>This paper outlines 
                <italic>iplotx, </italic>a general purpose network plotting library. This software presents a unified interface for plotting networks generated by different open-source tools. This is a simple tool, but it fulfils a real need, and does it well. The paper is nicely written, and the software itself follows all software development best practices, with linting, testing, type hints, docstrings and continuous integration set up etc. The software is freely available on PyPI and is easy to install (at least on this reviewers machine). The documentation is particularly good, with reference API documentation, details on how to customise the visualisation, along with an extensive gallery of examples.</p>
            <p> </p>
            <p> There are limited details about the code and methods within the paper, however, there is plenty of detail within the online documentation and within the code itself (where it should be!).&#x00a0;</p>
            <p> </p>
            <p> There are a few minor issues within the paper:</p>
            <p> </p>
            <p> 1. It is stated that iplotx &#x201c;guarantees&#x201d; that networks will be plotted identically regardless of the source software. &#x201c;Guarantee&#x201d; is a strong term, I would either provide evidence that this is always true, or just soften the language - maybe &#x201c;ensures&#x201d;?</p>
            <p> 2. Fig 1 and Fig 2 seem to be missing references in the caption.</p>
            <p> 3. In the results section, it should read &#x201c;covers all element types of the visualisation&#x201d;, i.e. make &#x201c;elements&#x201d; singular.</p>
            <p> 4. Only part of &#x201c;De la Fuente et al. 2022&#x201d; links to the reference.&#x00a0;</p>
            <p> </p>
            <p> Other than these, the tool and the paper are well written, and seem to address a real need in an efficient and well-thought out manner.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Software engineering, Python, neuroscience, image analysis.</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
</article>
