banner



How To Draw Tree In Python

Set Up Tree with igraph¶

Install igraph with pip install python-igraph.

In [1]:

                                    !pip install python-igraph                
Requirement already satisfied: python-igraph in /home/circleci/project/doc/venv/lib/python3.7/site-packages (0.9.8) Requirement already satisfied: igraph==0.9.8 in /home/circleci/project/doc/venv/lib/python3.7/site-packages (from python-igraph) (0.9.8) Requirement already satisfied: texttable>=1.6.2 in /home/circleci/project/doc/venv/lib/python3.7/site-packages (from igraph==0.9.8->python-igraph) (1.6.4)              

In [2]:

                                import                igraph                from                igraph                import                Graph                ,                EdgeSeq                nr_vertices                =                25                v_label                =                list                (                map                (                str                ,                range                (                nr_vertices                )))                G                =                Graph                .                Tree                (                nr_vertices                ,                2                )                # 2 stands for children number                lay                =                G                .                layout                (                'rt'                )                position                =                {                k                :                lay                [                k                ]                for                k                in                range                (                nr_vertices                )}                Y                =                [                lay                [                k                ][                1                ]                for                k                in                range                (                nr_vertices                )]                M                =                max                (                Y                )                es                =                EdgeSeq                (                G                )                # sequence of edges                E                =                [                e                .                tuple                for                e                in                G                .                es                ]                # list of edges                L                =                len                (                position                )                Xn                =                [                position                [                k                ][                0                ]                for                k                in                range                (                L                )]                Yn                =                [                2                *                M                -                position                [                k                ][                1                ]                for                k                in                range                (                L                )]                Xe                =                []                Ye                =                []                for                edge                in                E                :                Xe                +=                [                position                [                edge                [                0                ]][                0                ],                position                [                edge                [                1                ]][                0                ],                None                ]                Ye                +=                [                2                *                M                -                position                [                edge                [                0                ]][                1                ],                2                *                M                -                position                [                edge                [                1                ]][                1                ],                None                ]                labels                =                v_label              

Create Plotly Traces¶

In [3]:

                                import                plotly.graph_objects                as                go                fig                =                go                .                Figure                ()                fig                .                add_trace                (                go                .                Scatter                (                x                =                Xe                ,                y                =                Ye                ,                mode                =                'lines'                ,                line                =                dict                (                color                =                'rgb(210,210,210)'                ,                width                =                1                ),                hoverinfo                =                'none'                ))                fig                .                add_trace                (                go                .                Scatter                (                x                =                Xn                ,                y                =                Yn                ,                mode                =                'markers'                ,                name                =                'bla'                ,                marker                =                dict                (                symbol                =                'circle-dot'                ,                size                =                18                ,                color                =                '#6175c1'                ,                #'#DB4551',                line                =                dict                (                color                =                'rgb(50,50,50)'                ,                width                =                1                )                ),                text                =                labels                ,                hoverinfo                =                'text'                ,                opacity                =                0.8                ))              

Create Text Inside the Circle via Annotations¶

In [4]:

                                def                make_annotations                (                pos                ,                text                ,                font_size                =                10                ,                font_color                =                'rgb(250,250,250)'                ):                L                =                len                (                pos                )                if                len                (                text                )                !=                L                :                raise                ValueError                (                'The lists pos and text must have the same len'                )                annotations                =                []                for                k                in                range                (                L                ):                annotations                .                append                (                dict                (                text                =                labels                [                k                ],                # or replace labels with a different list for the text within the circle                x                =                pos                [                k                ][                0                ],                y                =                2                *                M                -                position                [                k                ][                1                ],                xref                =                'x1'                ,                yref                =                'y1'                ,                font                =                dict                (                color                =                font_color                ,                size                =                font_size                ),                showarrow                =                False                )                )                return                annotations              

Add Axis Specifications and Create the Layout¶

In [5]:

                                axis                =                dict                (                showline                =                False                ,                # hide axis line, grid, ticklabels and  title                zeroline                =                False                ,                showgrid                =                False                ,                showticklabels                =                False                ,                )                fig                .                update_layout                (                title                =                'Tree with Reingold-Tilford Layout'                ,                annotations                =                make_annotations                (                position                ,                v_label                ),                font_size                =                12                ,                showlegend                =                False                ,                xaxis                =                axis                ,                yaxis                =                axis                ,                margin                =                dict                (                l                =                40                ,                r                =                40                ,                b                =                85                ,                t                =                100                ),                hovermode                =                'closest'                ,                plot_bgcolor                =                'rgb(248,248,248)'                )                fig                .                show                ()              

What About Dash?¶

Dash is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.

Learn about how to install Dash at https://dash.plot.ly/installation.

Everywhere in this page that you see fig.show(), you can display the same figure in a Dash application by passing it to the figure argument of the Graph component from the built-in dash_core_components package like this:

                                import                plotly.graph_objects                as                go                # or plotly.express as px                fig                =                go                .                Figure                ()                # or any Plotly Express function e.g. px.bar(...)                # fig.add_trace( ... )                # fig.update_layout( ... )                import                dash                import                dash_core_components                as                dcc                import                dash_html_components                as                html                app                =                dash                .                Dash                ()                app                .                layout                =                html                .                Div                ([                dcc                .                Graph                (                figure                =                fig                )                ])                app                .                run_server                (                debug                =                True                ,                use_reloader                =                False                )                # Turn off reloader if inside Jupyter              

How To Draw Tree In Python

Source: https://plotly.com/python/tree-plots/

Posted by: brownbefor1967.blogspot.com

0 Response to "How To Draw Tree In Python"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel