* ---------------------------------------
* This demo was created using amCharts 5.
* For more information visit:
* https://www.amcharts.com/
* Documentation is available at:
* https://www.amcharts.com/docs/v5/
* ---------------------------------------
// https://www.amcharts.com/docs/v5/getting-started/#Root_element
var root = am5.Root.new("chartdiv");
// https://www.amcharts.com/docs/v5/concepts/themes/
root.setThemes([am5themes_Animated.new(root)]);
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
// start and end angle must be set both for chart and series
var chart = root.container.children.push(
am5percent.PieChart.new(root, {
layout: root.verticalLayout,
innerRadius: am5.percent(40)
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Series
// start and end angle must be set both for chart and series
var series0 = chart.series.push(
am5percent.PieSeries.new(root, {
categoryField: "country",
var bgColor = root.interfaceColors.get("background");
series0.ticks.template.setAll({ forceHidden: true });
series0.labels.template.setAll({ forceHidden: true });
series0.slices.template.setAll({
tooltipText: "{category}: {valuePercentTotal.formatNumber('0.00')}% ({value} bottles)"
series0.slices.template.states.create("hover", { scale: 0.95 });
var series1 = chart.series.push(
am5percent.PieSeries.new(root, {
categoryField: "country",
series1.slices.template.setAll({
tooltipText: "{category}: {valuePercentTotal.formatNumber('0.00')}% ({value} litres)"
country: "Czech Republic",
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Setting_data
series0.data.setAll(data);
series1.data.setAll(data);
// Play initial series animation
// https://www.amcharts.com/docs/v5/concepts/animations/#Animation_of_series
series0.appear(1000, 100);
series1.appear(1000, 100);
var legend = chart.children.push(
centerX: am5.percent(50),
layout: root.horizontalLayout
legend.valueLabels.template.setAll({
legend.itemContainers.template.on("disabled", function (disabled, target) {
var category = target.dataItem.dataContext.get("category");
am5.array.eachContinue(series1.dataItems, function (item) {
if (item.get("category") == category) {
if (disabled) item.hide();
legend.valueLabels.template.adapters.add("text", function (text, target) {
var category = target.dataItem.get("category");
var dataItem2 = series1.dataItems.find(function (item) {
if (item.get("category") == category) return item;
formatPercent(target.dataItem.get("valuePercentTotal")) +
formatPercent(dataItem2.get("valuePercentTotal")) +
function formatPercent(value) {
return root.numberFormatter.format(value, "0.00p");
legend.data.setAll(series0.dataItems);