Clustered points inheriting bullet colors
This demo shows how we can make group bullets of the Clustered Point Series inherit colors of the points it consists of.
Open in:New tab
/** * --------------------------------------- * 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/ * --------------------------------------- */
// Create root element// https://www.amcharts.com/docs/v5/getting-started/#Root_elementvar root = am5.Root.new("chartdiv");
// Set themes// https://www.amcharts.com/docs/v5/concepts/themes/root.setThemes([am5themes_Animated.new(root)]);
// Create the map chart// https://www.amcharts.com/docs/v5/charts/map-chart/var chart = root.container.children.push( am5map.MapChart.new(root, { panX: "rotateX", panY: "translateY", projection: am5map.geoMercator() }));
chart.set("zoomControl", am5map.ZoomControl.new(root, {}));
// Create main polygon series for countries// https://www.amcharts.com/docs/v5/charts/map-chart/map-polygon-series/var polygonSeries = chart.series.push( am5map.MapPolygonSeries.new(root, { geoJSON: am5geodata_worldLow, exclude: ["AQ"] }));
polygonSeries.mapPolygons.template.setAll({ fill: am5.color(0xdadada)});
// Create point series for markers// https://www.amcharts.com/docs/v5/charts/map-chart/map-point-series/var pointSeries = chart.series.push(am5map.ClusteredPointSeries.new(root, {}));
// Set clustered bullet// https://www.amcharts.com/docs/v5/charts/map-chart/clustered-point-series/#Group_bulletpointSeries.set("clusteredBullet", function (root, series, dataItem) { var container = am5.Container.new(root, { cursorOverStyle: "pointer" });
dataItem.on("children", function (children, target) { var bullet = target.get("bullet").get("sprite"); if (children && children.length) { var color; am5.array.eachContinue(children, function (child) { var childColor = child.bullets[0].get("sprite").get("fill"); if (!color) { color = childColor; } else if (color.hex != childColor.hex) { // Use neutral color if combined bullet consists of multiple colors color = am5.color(0x999998); return false; } return true; });
bullet.children.each(function (circle) { if (circle.className == "Circle") { circle.setAll({ fill: color }); } }); } });
var circle1 = container.children.push( am5.Circle.new(root, { radius: 8, tooltipY: 0, fill: am5.color(0xff8c00) }) );
var circle2 = container.children.push( am5.Circle.new(root, { radius: 12, fillOpacity: 0.3, tooltipY: 0, fill: am5.color(0xff8c00) }) );
var circle3 = container.children.push( am5.Circle.new(root, { radius: 16, fillOpacity: 0.3, tooltipY: 0, fill: am5.color(0xff8c00) }) );
var label = container.children.push( am5.Label.new(root, { centerX: am5.p50, centerY: am5.p50, fill: am5.color(0xffffff), populateText: true, fontSize: "8", text: "{value}" }) );
container.events.on("click", function (e) { pointSeries.zoomToCluster(e.target.dataItem); });
return am5.Bullet.new(root, { sprite: container });});
// Create regular bulletspointSeries.bullets.push(function (root, series, dataItem) { var circle = am5.Circle.new(root, { radius: 6, tooltipY: 0, fill: dataItem.dataContext.color || am5.color(0xff8c00), tooltipText: "{title}" });
return am5.Bullet.new(root, { sprite: circle });});
// Set datavar cities = [ { title: "Vienna", latitude: 48.2092, longitude: 16.3728, color: am5.color(0xe76f51) }, { title: "Minsk", latitude: 53.9678, longitude: 27.5766, color: am5.color(0xe76f51) }, { title: "Brussels", latitude: 50.8371, longitude: 4.3676, color: am5.color(0xe76f51) }, { title: "Sarajevo", latitude: 43.8608, longitude: 18.4214, color: am5.color(0xe76f51) }, { title: "Sofia", latitude: 42.7105, longitude: 23.3238, color: am5.color(0xe76f51) }, { title: "Zagreb", latitude: 45.815, longitude: 15.9785, color: am5.color(0xe76f51) }, { title: "Pristina", latitude: 42.666667, longitude: 21.166667, color: am5.color(0xe76f51) }, { title: "Prague", latitude: 50.0878, longitude: 14.4205, color: am5.color(0x264653) }, { title: "Copenhagen", latitude: 55.6763, longitude: 12.5681, color: am5.color(0x2a9d8f) }, { title: "Tallinn", latitude: 59.4389, longitude: 24.7545, color: am5.color(0xe9c46a) }, { title: "Helsinki", latitude: 60.1699, longitude: 24.9384, color: am5.color(0xf4a261) }, { title: "Paris", latitude: 48.8567, longitude: 2.351, color: am5.color(0xe76f51) }, { title: "Berlin", latitude: 52.5235, longitude: 13.4115, color: am5.color(0xe9c46a) }, { title: "Athens", latitude: 37.9792, longitude: 23.7166, color: am5.color(0xe9c46a) }, { title: "Budapest", latitude: 47.4984, longitude: 19.0408, color: am5.color(0xe9c46a) }, { title: "Reykjavik", latitude: 64.1353, longitude: -21.8952, color: am5.color(0xe9c46a) }, { title: "Dublin", latitude: 53.3441, longitude: -6.2675, color: am5.color(0xe9c46a) }, { title: "Rome", latitude: 41.8955, longitude: 12.4823, color: am5.color(0xe76f51) }, { title: "Riga", latitude: 56.9465, longitude: 24.1049, color: am5.color(0x264653) }, { title: "Vaduz", latitude: 47.1411, longitude: 9.5215, color: am5.color(0xe76f51) }, { title: "Vilnius", latitude: 54.6896, longitude: 25.2799, color: am5.color(0x2a9d8f) }, { title: "Luxembourg", latitude: 49.61, longitude: 6.1296, color: am5.color(0x2a9d8f) }, { title: "Skopje", latitude: 42.0024, longitude: 21.4361, color: am5.color(0x2a9d8f) }, { title: "Valletta", latitude: 35.9042, longitude: 14.5189, color: am5.color(0x2a9d8f) }, { title: "Chisinau", latitude: 47.0167, longitude: 28.8497, color: am5.color(0xf4a261) }, { title: "Monaco", latitude: 43.7325, longitude: 7.4189, color: am5.color(0x2a9d8f) }, { title: "Podgorica", latitude: 42.4602, longitude: 19.2595, color: am5.color(0x264653) }, { title: "Amsterdam", latitude: 52.3738, longitude: 4.891, color: am5.color(0x264653) }, { title: "Oslo", latitude: 59.9138, longitude: 10.7387, color: am5.color(0x264653) }, { title: "Warsaw", latitude: 52.2297, longitude: 21.0122, color: am5.color(0xe9c46a) }, { title: "Lisbon", latitude: 38.7072, longitude: -9.1355, color: am5.color(0xf4a261) }, { title: "Bucharest", latitude: 44.4479, longitude: 26.0979, color: am5.color(0x2a9d8f) }, { title: "Moscow", latitude: 55.7558, longitude: 37.6176, color: am5.color(0x264653) }, { title: "San Marino", latitude: 43.9424, longitude: 12.4578, color: am5.color(0xf4a261) }, { title: "Belgrade", latitude: 44.8048, longitude: 20.4781, color: am5.color(0x2a9d8f) }, { title: "Bratislava", latitude: 48.2116, longitude: 17.1547, color: am5.color(0xe76f51) }, { title: "Ljubljana", latitude: 46.0514, longitude: 14.506, color: am5.color(0xf4a261) }, { title: "Madrid", latitude: 40.4167, longitude: -3.7033, color: am5.color(0xf4a261) }, { title: "Stockholm", latitude: 59.3328, longitude: 18.0645, color: am5.color(0xf4a261) }, { title: "Bern", latitude: 46.948, longitude: 7.448, color: am5.color(0xf4a261) }, { title: "Kiev", latitude: 50.4422, longitude: 30.5367, color: am5.color(0xf4a261) }, { title: "London", latitude: 51.5002, longitude: -0.1262, color: am5.color(0xf4a261) }, { title: "Gibraltar", latitude: 36.1377, longitude: -5.3453, color: am5.color(0xf4a261) }, { title: "Saint Peter Port", latitude: 49.466, longitude: -2.5522, color: am5.color(0xf4a261) }, { title: "Douglas", latitude: 54.167, longitude: -4.4821, color: am5.color(0xf4a261) }, { title: "Saint Helier", latitude: 49.1919, longitude: -2.1071, color: am5.color(0xe76f51) }, { title: "Longyearbyen", latitude: 78.2186, longitude: 15.6488, color: am5.color(0xf4a261) }, { title: "Kabul", latitude: 34.5155, longitude: 69.1952, color: am5.color(0xe76f51) }, { title: "Yerevan", latitude: 40.1596, longitude: 44.509, color: am5.color(0x2a9d8f) }, { title: "Baku", latitude: 40.3834, longitude: 49.8932, color: am5.color(0xe76f51) }, { title: "Manama", latitude: 26.1921, longitude: 50.5354, color: am5.color(0x264653) }, { title: "Dhaka", latitude: 23.7106, longitude: 90.3978, color: am5.color(0x2a9d8f) }, { title: "Thimphu", latitude: 27.4405, longitude: 89.673, color: am5.color(0xf4a261) }, { title: "Bandar Seri Begawan", latitude: 4.9431, longitude: 114.9425, color: am5.color(0xf4a261) }, { title: "Phnom Penh", latitude: 11.5434, longitude: 104.8984, color: am5.color(0xf4a261) }, { title: "Peking", latitude: 39.9056, longitude: 116.3958, color: am5.color(0xf4a261) }, { title: "Nicosia", latitude: 35.1676, longitude: 33.3736, color: am5.color(0xf4a261) }, { title: "T'bilisi", latitude: 41.701, longitude: 44.793, color: am5.color(0x264653) }, { title: "New Delhi", latitude: 28.6353, longitude: 77.225, color: am5.color(0x264653) }, { title: "Jakarta", latitude: -6.1862, longitude: 106.8063, color: am5.color(0x264653) }, { title: "Teheran", latitude: 35.7061, longitude: 51.4358, color: am5.color(0x264653) }, { title: "Baghdad", latitude: 33.3157, longitude: 44.3922, color: am5.color(0x264653) }, { title: "Jerusalem", latitude: 31.76, longitude: 35.17, color: am5.color(0x264653) }, { title: "Tokyo", latitude: 35.6785, longitude: 139.6823, color: am5.color(0x264653) }, { title: "Amman", latitude: 31.9394, longitude: 35.9349, color: am5.color(0x264653) }, { title: "Astana", latitude: 51.1796, longitude: 71.4475, color: am5.color(0x264653) }, { title: "Kuwait", latitude: 29.3721, longitude: 47.9824, color: am5.color(0x264653) }, { title: "Bishkek", latitude: 42.8679, longitude: 74.5984, color: am5.color(0x264653) }, { title: "Vientiane", latitude: 17.9689, longitude: 102.6137, color: am5.color(0x264653) }, { title: "Beyrouth / Beirut", latitude: 33.8872, longitude: 35.5134, color: am5.color(0x264653) }, { title: "Kuala Lumpur", latitude: 3.1502, longitude: 101.7077, color: am5.color(0x264653) }, { title: "Ulan Bator", latitude: 47.9138, longitude: 106.922, color: am5.color(0x264653) }, { title: "Pyinmana", latitude: 19.7378, longitude: 96.2083, color: am5.color(0x264653) }, { title: "Kathmandu", latitude: 27.7058, longitude: 85.3157, color: am5.color(0x264653) }, { title: "Muscat", latitude: 23.6086, longitude: 58.5922, color: am5.color(0x264653) }, { title: "Islamabad", latitude: 33.6751, longitude: 73.0946, color: am5.color(0x264653) }, { title: "Manila", latitude: 14.579, longitude: 120.9726, color: am5.color(0x264653) }, { title: "Doha", latitude: 25.2948, longitude: 51.5082, color: am5.color(0x264653) }, { title: "Riyadh", latitude: 24.6748, longitude: 46.6977, color: am5.color(0x264653) }, { title: "Singapore", latitude: 1.2894, longitude: 103.85, color: am5.color(0x264653) }, { title: "Seoul", latitude: 37.5139, longitude: 126.9828, color: am5.color(0x264653) }, { title: "Colombo", latitude: 6.9155, longitude: 79.8572, color: am5.color(0x264653) }, { title: "Damascus", latitude: 33.5158, longitude: 36.2939, color: am5.color(0x264653) }, { title: "Taipei", latitude: 25.0338, longitude: 121.5645, color: am5.color(0x264653) }, { title: "Dushanbe", latitude: 38.5737, longitude: 68.7738, color: am5.color(0x2a9d8f) }, { title: "Bangkok", latitude: 13.7573, longitude: 100.502, color: am5.color(0xe76f51) }, { title: "Dili", latitude: -8.5662, longitude: 125.588, color: am5.color(0xf4a261) }, { title: "Ankara", latitude: 39.9439, longitude: 32.856, color: am5.color(0x2a9d8f) }, { title: "Ashgabat", latitude: 37.9509, longitude: 58.3794, color: am5.color(0xe76f51) }, { title: "Abu Dhabi", latitude: 24.4764, longitude: 54.3705, color: am5.color(0x264653) }, { title: "Tashkent", latitude: 41.3193, longitude: 69.2481, color: am5.color(0xf4a261) }, { title: "Hanoi", latitude: 21.0341, longitude: 105.8372, color: am5.color(0xe76f51) }, { title: "Sanaa", latitude: 15.3556, longitude: 44.2081, color: am5.color(0xe9c46a) }, { title: "Buenos Aires", latitude: -34.6118, longitude: -58.4173, color: am5.color(0xe76f51) }, { title: "Bridgetown", latitude: 13.0935, longitude: -59.6105, color: am5.color(0xe76f51) }, { title: "Belmopan", latitude: 17.2534, longitude: -88.7713, color: am5.color(0xe76f51) }, { title: "Sucre", latitude: -19.0421, longitude: -65.2559, color: am5.color(0xe76f51) }, { title: "Brasilia", latitude: -15.7801, longitude: -47.9292, color: am5.color(0xe76f51) }, { title: "Ottawa", latitude: 45.4235, longitude: -75.6979, color: am5.color(0xe76f51) }, { title: "Santiago", latitude: -33.4691, longitude: -70.642, color: am5.color(0xe76f51) }, { title: "Bogota", latitude: 4.6473, longitude: -74.0962, color: am5.color(0xe76f51) }, { title: "San Jose", latitude: 9.9402, longitude: -84.1002, color: am5.color(0xe76f51) }, { title: "Havana", latitude: 23.1333, longitude: -82.3667, color: am5.color(0xe76f51) }, { title: "Roseau", latitude: 15.2976, longitude: -61.39, color: am5.color(0xe76f51) }, { title: "Santo Domingo", latitude: 18.479, longitude: -69.8908, color: am5.color(0xe76f51) }, { title: "Quito", latitude: -0.2295, longitude: -78.5243, color: am5.color(0xe76f51) }, { title: "San Salvador", latitude: 13.7034, longitude: -89.2073, color: am5.color(0xe76f51) }, { title: "Guatemala", latitude: 14.6248, longitude: -90.5328, color: am5.color(0xe76f51) }, { title: "Ciudad de Mexico", latitude: 19.4271, longitude: -99.1276, color: am5.color(0xe76f51) }, { title: "Managua", latitude: 12.1475, longitude: -86.2734, color: am5.color(0x264653) }, { title: "Panama", latitude: 8.9943, longitude: -79.5188, color: am5.color(0xf4a261) }, { title: "Asuncion", latitude: -25.3005, longitude: -57.6362, color: am5.color(0x264653) }, { title: "Lima", latitude: -12.0931, longitude: -77.0465, color: am5.color(0xe9c46a) }, { title: "Castries", latitude: 13.9972, longitude: -60.0018, color: am5.color(0x2a9d8f) }, { title: "Paramaribo", latitude: 5.8232, longitude: -55.1679, color: am5.color(0x264653) }, { title: "Washington D.C.", latitude: 38.8921, longitude: -77.0241, color: am5.color(0xf4a261) }, { title: "Montevideo", latitude: -34.8941, longitude: -56.0675, color: am5.color(0xe76f51) }, { title: "Caracas", latitude: 10.4961, longitude: -66.8983, color: am5.color(0xf4a261) }, { title: "Oranjestad", latitude: 12.5246, longitude: -70.0265, color: am5.color(0xe76f51) }, { title: "Cayenne", latitude: 4.9346, longitude: -52.3303, color: am5.color(0x264653) }, { title: "Plymouth", latitude: 16.6802, longitude: -62.2014, color: am5.color(0x2a9d8f) }, { title: "San Juan", latitude: 18.45, longitude: -66.0667, color: am5.color(0xe9c46a) }, { title: "Algiers", latitude: 36.7755, longitude: 3.0597, color: am5.color(0xf4a261) }, { title: "Luanda", latitude: -8.8159, longitude: 13.2306, color: am5.color(0xe76f51) }, { title: "Porto-Novo", latitude: 6.4779, longitude: 2.6323, color: am5.color(0x264653) }, { title: "Gaborone", latitude: -24.657, longitude: 25.9089, color: am5.color(0xe76f51) }, { title: "Ouagadougou", latitude: 12.3569, longitude: -1.5352, color: am5.color(0xe76f51) }, { title: "Bujumbura", latitude: -3.3818, longitude: 29.3622, color: am5.color(0xf4a261) }, { title: "Yaounde", latitude: 3.8612, longitude: 11.5217, color: am5.color(0x264653) }, { title: "Bangui", latitude: 4.3621, longitude: 18.5873, color: am5.color(0x2a9d8f) }, { title: "Brazzaville", latitude: -4.2767, longitude: 15.2662, color: am5.color(0x264653) }, { title: "Kinshasa", latitude: -4.3369, longitude: 15.3271, color: am5.color(0xe9c46a) }, { title: "Yamoussoukro", latitude: 6.8067, longitude: -5.2728, color: am5.color(0xe9c46a) }, { title: "Djibouti", latitude: 11.5806, longitude: 43.1425, color: am5.color(0xf4a261) }, { title: "Cairo", latitude: 30.0571, longitude: 31.2272, color: am5.color(0xe76f51) }, { title: "Asmara", latitude: 15.3315, longitude: 38.9183, color: am5.color(0x2a9d8f) }, { title: "Addis Abeba", latitude: 9.0084, longitude: 38.7575, color: am5.color(0x264653) }, { title: "Libreville", latitude: 0.3858, longitude: 9.4496, color: am5.color(0xe76f51) }, { title: "Banjul", latitude: 13.4399, longitude: -16.6775, color: am5.color(0xe9c46a) }, { title: "Accra", latitude: 5.5401, longitude: -0.2074, color: am5.color(0xf4a261) }, { title: "Conakry", latitude: 9.537, longitude: -13.6785, color: am5.color(0x264653) }, { title: "Bissau", latitude: 11.8598, longitude: -15.5875, color: am5.color(0x2a9d8f) }, { title: "Nairobi", latitude: -1.2762, longitude: 36.7965, color: am5.color(0x264653) }, { title: "Maseru", latitude: -29.2976, longitude: 27.4854, color: am5.color(0xe76f51) }, { title: "Monrovia", latitude: 6.3106, longitude: -10.8047, color: am5.color(0xf4a261) }, { title: "Tripoli", latitude: 32.883, longitude: 13.1897, color: am5.color(0xe76f51) }, { title: "Antananarivo", latitude: -18.9201, longitude: 47.5237, color: am5.color(0xe76f51) }, { title: "Lilongwe", latitude: -13.9899, longitude: 33.7703, color: am5.color(0xe76f51) }, { title: "Bamako", latitude: 12.653, longitude: -7.9864, color: am5.color(0xe76f51) }, { title: "Nouakchott", latitude: 18.0669, longitude: -15.99, color: am5.color(0xe76f51) }, { title: "Port Louis", latitude: -20.1654, longitude: 57.4896, color: am5.color(0xe76f51) }, { title: "Rabat", latitude: 33.9905, longitude: -6.8704, color: am5.color(0xe76f51) }, { title: "Maputo", latitude: -25.9686, longitude: 32.5804, color: am5.color(0xe76f51) }, { title: "Windhoek", latitude: -22.5749, longitude: 17.0805, color: am5.color(0xe76f51) }, { title: "Niamey", latitude: 13.5164, longitude: 2.1157, color: am5.color(0xe76f51) }, { title: "Abuja", latitude: 9.058, longitude: 7.4891, color: am5.color(0xe76f51) }, { title: "Kigali", latitude: -1.9441, longitude: 30.0619, color: am5.color(0xe76f51) }, { title: "Dakar", latitude: 14.6953, longitude: -17.4439, color: am5.color(0xe76f51) }, { title: "Freetown", latitude: 8.4697, longitude: -13.2659, color: am5.color(0xe76f51) }, { title: "Mogadishu", latitude: 2.0411, longitude: 45.3426, color: am5.color(0xe76f51) }, { title: "Pretoria", latitude: -25.7463, longitude: 28.1876, color: am5.color(0xe76f51) }, { title: "Mbabane", latitude: -26.3186, longitude: 31.141, color: am5.color(0x264653) }, { title: "Dodoma", latitude: -6.167, longitude: 35.7497, color: am5.color(0xe9c46a) }, { title: "Lome", latitude: 6.1228, longitude: 1.2255, color: am5.color(0x2a9d8f) }, { title: "Tunis", latitude: 36.8117, longitude: 10.1761, color: am5.color(0x264653) }];
for (var i = 0; i < cities.length; i++) { var city = cities[i]; addCity(city.longitude, city.latitude, city.title, city.color);}
function addCity(longitude, latitude, title, color) { pointSeries.data.push({ geometry: { type: "Point", coordinates: [longitude, latitude] }, title: title, color: color });}
// Make stuff animate on loadchart.appear(1000, 100);<div id="chartdiv"></div>body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";}
#chartdiv { width: 100%; height: 95vh;}clustered-points-inheriting-bullet-colors