Skip to content

Sorting

ipyvizzu provides multiple options to sort data. By default, the data is sorted by the order it is added to ipyvizzu. This is why we suggest to add temporal data such as dates in chronological order - from oldest to newest.

You can also sort the elements by value, which will provide you with an ascending order.

Info - How to setup Chart

import pandas as pd
from ipyvizzu import Chart, Data, Config

df = pd.read_csv(
    "https://ipyvizzu.vizzuhq.com/0.17/assets/data/music_data.csv"
)
data = Data()
data.add_df(df)

chart = Chart()

chart.animate(
    data,
    Config(
        {
            "channels": {
                "y": {"set": ["Popularity", "Kinds"]},
                "x": {"set": ["Genres"]},
                "color": {"set": ["Kinds"]},
                "label": {"set": ["Popularity"]},
            },
        }
    ),
)

chart.animate(
    Config(
        {
            "sort": "byValue",
        }
    )
)

If you want descending order instead, you have to set the reverse parameter to True. When used without setting the sorting to byValue, the elements will be in the opposite order than they are in the data set added to ipyvizzu.

chart.animate(
    Config(
        {
            "reverse": True,
        }
    )
)

This is how to switch back to the default sorting.

chart.animate(
    Config(
        {
            "sort": "none",
            "reverse": False,
        }
    )
)

When you have more than one dimension on a channel, their order determines how the elements are grouped. For example, below - each set of bars is first organized by Genres, and then we have one bar for each of Kinds.

chart.animate(
    Config(
        {
            "channels": {
                "y": {"detach": ["Kinds"]},
                "x": {"set": ["Genres", "Kinds"]},
            }
        }
    )
)

When switching the order of dimensions on the x-axis ipyvizzu will rearrange the elements according to this new logic.

Note

The legend is automatically removed during the animation.

chart.animate(
    Config(
        {
            "channels": {
                "x": {"set": ["Kinds", "Genres"]},
            }
        }
    )
)