Scatter Plot for Continuous or Discrete Data

In [1]:

                                # x and y given as array_like objects                import                plotly.express                as                px                fig                =                px                .                scatter                (                x                =                [                0                ,                1                ,                2                ,                3                ,                4                ],                y                =                [                0                ,                1                ,                4                ,                9                ,                16                ])                fig                .                show                ()              

In [2]:

                                # x and y given as DataFrame columns                import                plotly.express                as                px                df                =                px                .                data                .                iris                ()                # iris is a pandas DataFrame                fig                =                px                .                scatter                (                df                ,                x                =                "sepal_width"                ,                y                =                "sepal_length"                )                fig                .                show                ()              

Setting size and color with column names¶

Scatter plots with variable-sized circular markers are often known as bubble charts. Note that color and size data are added to hover information. You can add other columns to hover data with the hover_data argument of px.scatter.

In [3]:

                                import                plotly.express                as                px                df                =                px                .                data                .                iris                ()                fig                =                px                .                scatter                (                df                ,                x                =                "sepal_width"                ,                y                =                "sepal_length"                ,                color                =                "species"                ,                size                =                'petal_length'                ,                hover_data                =                [                'petal_width'                ])                fig                .                show                ()              

In [4]:

                                import                plotly.express                as                px                df                =                px                .                data                .                iris                ()                fig                =                px                .                scatter                (                df                ,                x                =                "sepal_width"                ,                y                =                "sepal_length"                ,                color                =                'petal_length'                )                fig                .                show                ()              

In [5]:

                                import                plotly.express                as                px                df                =                px                .                data                .                iris                ()                fig                =                px                .                scatter                (                df                ,                x                =                "sepal_width"                ,                y                =                "sepal_length"                ,                color                =                "species"                ,                symbol                =                "species"                )                fig                .                show                ()              

Scatter plots in Dash¶

Dash is the best way to build analytical apps in Python using Plotly figures. To run the app below, run pip install dash, click "Download" to get the code and run python app.py.

Get started with the official Dash docs and learn how to effortlessly style & deploy apps like this with Dash Enterprise.

Sign up for Dash Club → Free cheat sheets plus updates from Chris Parmer and Adam Schroeder delivered to your inbox every two months. Includes tips and tricks, community apps, and deep dives into the Dash architecture. Join now.

Scatter plots and Categorical Axes¶

Scatter plots can be made using any type of cartesian axis, including linear, logarithmic, categorical or date axes.

Scatter plots where one axis is categorical are often known as dot plots.

In [7]:

                                import                plotly.express                as                px                df                =                px                .                data                .                medals_long                ()                fig                =                px                .                scatter                (                df                ,                y                =                "nation"                ,                x                =                "count"                ,                color                =                "medal"                ,                symbol                =                "medal"                )                fig                .                update_traces                (                marker_size                =                10                )                fig                .                show                ()              

In [8]:

                                import                plotly.express                as                px                df                =                px                .                data                .                iris                ()                df                [                "e"                ]                =                df                [                "sepal_width"                ]                /                100                fig                =                px                .                scatter                (                df                ,                x                =                "sepal_width"                ,                y                =                "sepal_length"                ,                color                =                "species"                ,                error_x                =                "e"                ,                error_y                =                "e"                )                fig                .                show                ()              

In [9]:

                                import                plotly.express                as                px                df                =                px                .                data                .                iris                ()                fig                =                px                .                scatter                (                df                ,                x                =                "sepal_length"                ,                y                =                "sepal_width"                ,                marginal_x                =                "histogram"                ,                marginal_y                =                "rug"                )                fig                .                show                ()              

In [10]:

                                import                plotly.express                as                px                df                =                px                .                data                .                tips                ()                fig                =                px                .                scatter                (                df                ,                x                =                "total_bill"                ,                y                =                "tip"                ,                color                =                "smoker"                ,                facet_col                =                "sex"                ,                facet_row                =                "time"                )                fig                .                show                ()              

In [11]:

                                import                plotly.express                as                px                df                =                px                .                data                .                tips                ()                fig                =                px                .                scatter                (                df                ,                x                =                "total_bill"                ,                y                =                "tip"                ,                trendline                =                "ols"                )                fig                .                show                ()              

Line plots with Plotly Express¶

In [12]:

                                import                plotly.express                as                px                import                numpy                as                np                t                =                np                .                linspace                (                0                ,                2                *                np                .                pi                ,                100                )                fig                =                px                .                line                (                x                =                t                ,                y                =                np                .                cos                (                t                ),                labels                =                {                'x'                :                't'                ,                'y'                :                'cos(t)'                })                fig                .                show                ()              

In [13]:

                                import                plotly.express                as                px                df                =                px                .                data                .                gapminder                ()                .                query                (                "continent == 'Oceania'"                )                fig                =                px                .                line                (                df                ,                x                =                'year'                ,                y                =                'lifeExp'                ,                color                =                'country'                )                fig                .                show                ()              

The markers argument can be set to True to show markers on lines.

In [14]:

                                import                plotly.express                as                px                df                =                px                .                data                .                gapminder                ()                .                query                (                "continent == 'Oceania'"                )                fig                =                px                .                line                (                df                ,                x                =                'year'                ,                y                =                'lifeExp'                ,                color                =                'country'                ,                markers                =                True                )                fig                .                show                ()              

In [15]:

                                import                plotly.express                as                px                df                =                px                .                data                .                gapminder                ()                .                query                (                "continent == 'Oceania'"                )                fig                =                px                .                line                (                df                ,                x                =                'year'                ,                y                =                'lifeExp'                ,                color                =                'country'                ,                symbol                =                "country"                )                fig                .                show                ()              

In [16]:

                                import                plotly.express                as                px                df                =                px                .                data                .                stocks                ()                fig                =                px                .                line                (                df                ,                x                =                'date'                ,                y                =                "GOOG"                )                fig                .                show                ()              

Data Order in Scatter and Line Charts¶

Plotly line charts are implemented as connected scatterplots (see below), meaning that the points are plotted and connected with lines in the order they are provided, with no automatic reordering.

This makes it possible to make charts like the one below, but also means that it may be required to explicitly sort data before passing it to Plotly to avoid lines moving "backwards" across the chart.

In [17]:

                                import                plotly.express                as                px                import                pandas                as                pd                df                =                pd                .                DataFrame                (                dict                (                x                =                [                1                ,                3                ,                2                ,                4                ],                y                =                [                1                ,                2                ,                3                ,                4                ]                ))                fig                =                px                .                line                (                df                ,                x                =                "x"                ,                y                =                "y"                ,                title                =                "Unsorted Input"                )                fig                .                show                ()                df                =                df                .                sort_values                (                by                =                "x"                )                fig                =                px                .                line                (                df                ,                x                =                "x"                ,                y                =                "y"                ,                title                =                "Sorted Input"                )                fig                .                show                ()              

Connected Scatterplots¶

In a connected scatterplot, two continuous variables are plotted against each other, with a line connecting them in some meaningful order, usually a time variable. In the plot below, we show the "trajectory" of a pair of countries through a space defined by GDP per Capita and Life Expectancy. Botswana's life expectancy

In [18]:

                                import                plotly.express                as                px                df                =                px                .                data                .                gapminder                ()                .                query                (                "country in ['Canada', 'Botswana']"                )                fig                =                px                .                line                (                df                ,                x                =                "lifeExp"                ,                y                =                "gdpPercap"                ,                color                =                "country"                ,                text                =                "year"                )                fig                .                update_traces                (                textposition                =                "bottom right"                )                fig                .                show                ()              

Scatter and line plots with go.Scatter¶

If Plotly Express does not provide a good starting point, it is possible to use the more generic go.Scatter class from plotly.graph_objects. Whereas plotly.express has two functions scatter and line, go.Scatter can be used both for plotting points (makers) or lines, depending on the value of mode. The different options of go.Scatter are documented in its reference page.

Simple Scatter Plot¶

In [19]:

                                import                plotly.graph_objects                as                go                import                numpy                as                np                N                =                1000                t                =                np                .                linspace                (                0                ,                10                ,                100                )                y                =                np                .                sin                (                t                )                fig                =                go                .                Figure                (                data                =                go                .                Scatter                (                x                =                t                ,                y                =                y                ,                mode                =                'markers'                ))                fig                .                show                ()              

In [20]:

                                import                plotly.graph_objects                as                go                # Create random data with numpy                import                numpy                as                np                np                .                random                .                seed                (                1                )                N                =                100                random_x                =                np                .                linspace                (                0                ,                1                ,                N                )                random_y0                =                np                .                random                .                randn                (                N                )                +                5                random_y1                =                np                .                random                .                randn                (                N                )                random_y2                =                np                .                random                .                randn                (                N                )                -                5                fig                =                go                .                Figure                ()                # Add traces                fig                .                add_trace                (                go                .                Scatter                (                x                =                random_x                ,                y                =                random_y0                ,                mode                =                'markers'                ,                name                =                'markers'                ))                fig                .                add_trace                (                go                .                Scatter                (                x                =                random_x                ,                y                =                random_y1                ,                mode                =                'lines+markers'                ,                name                =                'lines+markers'                ))                fig                .                add_trace                (                go                .                Scatter                (                x                =                random_x                ,                y                =                random_y2                ,                mode                =                'lines'                ,                name                =                'lines'                ))                fig                .                show                ()              

In [21]:

                                import                plotly.graph_objects                as                go                fig                =                go                .                Figure                (                data                =                go                .                Scatter                (                x                =                [                1                ,                2                ,                3                ,                4                ],                y                =                [                10                ,                11                ,                12                ,                13                ],                mode                =                'markers'                ,                marker                =                dict                (                size                =                [                40                ,                60                ,                80                ,                100                ],                color                =                [                0                ,                1                ,                2                ,                3                ])                ))                fig                .                show                ()              

Style Scatter Plots¶

In [22]:

                                import                plotly.graph_objects                as                go                import                numpy                as                np                t                =                np                .                linspace                (                0                ,                10                ,                100                )                fig                =                go                .                Figure                ()                fig                .                add_trace                (                go                .                Scatter                (                x                =                t                ,                y                =                np                .                sin                (                t                ),                name                =                'sin'                ,                mode                =                'markers'                ,                marker_color                =                'rgba(152, 0, 0, .8)'                ))                fig                .                add_trace                (                go                .                Scatter                (                x                =                t                ,                y                =                np                .                cos                (                t                ),                name                =                'cos'                ,                marker_color                =                'rgba(255, 182, 193, .9)'                ))                # Set options common to all traces with fig.update_traces                fig                .                update_traces                (                mode                =                'markers'                ,                marker_line_width                =                2                ,                marker_size                =                10                )                fig                .                update_layout                (                title                =                'Styled Scatter'                ,                yaxis_zeroline                =                False                ,                xaxis_zeroline                =                False                )                fig                .                show                ()              

Data Labels on Hover¶

In [23]:

                                import                plotly.graph_objects                as                go                import                pandas                as                pd                data                =                pd                .                read_csv                (                "https://raw.githubusercontent.com/plotly/datasets/master/2014_usa_states.csv"                )                fig                =                go                .                Figure                (                data                =                go                .                Scatter                (                x                =                data                [                'Postal'                ],                y                =                data                [                'Population'                ],                mode                =                'markers'                ,                marker_color                =                data                [                'Population'                ],                text                =                data                [                'State'                ]))                # hover text goes here                fig                .                update_layout                (                title                =                'Population of USA States'                )                fig                .                show                ()              

Scatter with a Color Dimension¶

In [24]:

                                import                plotly.graph_objects                as                go                import                numpy                as                np                fig                =                go                .                Figure                (                data                =                go                .                Scatter                (                y                =                np                .                random                .                randn                (                500                ),                mode                =                'markers'                ,                marker                =                dict                (                size                =                16                ,                color                =                np                .                random                .                randn                (                500                ),                #set color equal to a variable                colorscale                =                'Viridis'                ,                # one of plotly colorscales                showscale                =                True                )                ))                fig                .                show                ()              

Large Data Sets¶

Now in Plotly you can implement WebGL with Scattergl() in place of Scatter()
for increased speed, improved interactivity, and the ability to plot even more data!

In [25]:

                                import                plotly.graph_objects                as                go                import                numpy                as                np                N                =                100000                fig                =                go                .                Figure                (                data                =                go                .                Scattergl                (                x                =                np                .                random                .                randn                (                N                ),                y                =                np                .                random                .                randn                (                N                ),                mode                =                'markers'                ,                marker                =                dict                (                color                =                np                .                random                .                randn                (                N                ),                colorscale                =                'Viridis'                ,                line_width                =                1                )                ))                fig                .                show                ()              

In [26]:

                                import                plotly.graph_objects                as                go                import                numpy                as                np                N                =                100000                r                =                np                .                random                .                uniform                (                0                ,                1                ,                N                )                theta                =                np                .                random                .                uniform                (                0                ,                2                *                np                .                pi                ,                N                )                fig                =                go                .                Figure                (                data                =                go                .                Scattergl                (                x                =                r                *                np                .                cos                (                theta                ),                # non-uniform distribution                y                =                r                *                np                .                sin                (                theta                ),                # zoom to see more points at the center                mode                =                'markers'                ,                marker                =                dict                (                color                =                np                .                random                .                randn                (                N                ),                colorscale                =                'Viridis'                ,                line_width                =                1                )                ))                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              

davilaouthigh.blogspot.com

Source: https://plotly.com/python/line-and-scatter/

0 Response to "Scatter Plot for Continuous or Discrete Data"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel