Aggregating data
The default logic of Vizzu
is to show the sum of values that are in the
categories added to a chart. So if we create a simple vertical bar chart by
adding the Popularity
measure to the y-axis, the height of the bar will be the
sum of all Popularity
values and when we add Genres
to the x-axis, the
height of the bars will be the sum of Popularity
values in each category
within Genres
.
Info - How to setup Vizzu
In HTML
, create a placeholder element that will contain the rendered chart.
<html>
<body>
<div id="myVizzu">
</div>
</body>
</html>
In JavaScript
, initialize and configure the chart:
import Vizzu from 'https://cdn.jsdelivr.net/npm/vizzu@0.16/dist/vizzu.min.js'
import data from 'https://lib.vizzuhq.com/0.16/assets/data/music_data.js'
let chart = new Vizzu('myVizzu')
await chart.initializing
chart.animate({
data
})
chart.animate({
config: {
channels: {
y: { set: ['Popularity'] }
}
}
})
chart.animate({
config: {
channels: {
x: { set: ['Genres'] }
}
}
})
Next to the default logic of sum, there are a handful of other aggregation
logics that are available in Vizzu
: min
, max
, mean
, count
and
distinct
. Aggregators can be set for data series using:
- data series descriptor objects:
{ name: 'Popularity', aggregator: 'min' }
- or by encoding them into the name of the data series:
'min(Popularity)'
We will use the second method in the following examples. Let's go through them to see how they work.
Minimum value: the height of the bars show the minimum value in the Popularity
measure in each of the Genres
.
chart.animate({
config: {
channels: {
y: { set: ['min(Popularity)'] }
}
}
})
Maximum value: the height of the bars show the maximum value in the Popularity
measure in each of the Genres
.
chart.animate({
config: {
channels: {
y: { set: ['max(Popularity)'] }
}
}
})
Mean value: the height of the bars show the mean value of the Popularity
measure in each of the Genres
.
chart.animate({
config: {
channels: {
y: { set: ['mean(Popularity)'] }
}
}
})
Count: the height of the bars show the number of items (rows if you will) in
each of the Genres
.
chart.animate({
config: {
channels: {
y: { set: ['count()'] }
}
}
})
Distinct: the height of the bars show the number of distinct categories of
Kinds
in each of the Genres
.
Note
Distinct aggregation logic relates to dimensions like Genres
and not to
measures like Popularity
.
chart.animate({
config: {
channels: {
y: { set: ['distinct(Kinds)'] }
}
}
})
Sum: this is how you can get back to the default aggregation logic of Vizzu
that sums the Popularity
values in each of the Genres
.
chart.animate({
config: {
channels: {
y: { set: ['sum(Popularity)'] }
}
}
})