import * as am5 from "@amcharts/amcharts5"; import * as am5xy from "@amcharts/amcharts5/xy"; import * as am5radar from "@amcharts/amcharts5/radar"; import am5themes_Animated from "@amcharts/amcharts5/themes/Animated"; // Create root element // https://www.amcharts.com/docs/v5/getting-started/#Root_element const root = am5.Root.new("chartdiv"); // Set themes // https://www.amcharts.com/docs/v5/concepts/themes/ root.setThemes([ am5themes_Animated.new(root) ]); // Create chart // https://www.amcharts.com/docs/v5/charts/radar-chart/ const chart = root.container.children.push(am5radar.RadarChart.new(root, { panX: false, panY: false, startAngle: 180, endAngle: 360 })); // Create axis and its renderer // https://www.amcharts.com/docs/v5/charts/radar-chart/gauge-charts/#Axes const axisRenderer = am5radar.AxisRendererCircular.new(root, { innerRadius: -10, strokeOpacity: 0.1 }); const xAxis = chart.xAxes.push(am5xy.ValueAxis.new(root, { maxDeviation: 0, min: 0, max: 100, strictMinMax: true, renderer: axisRenderer })); // Add clock hand // https://www.amcharts.com/docs/v5/charts/radar-chart/gauge-charts/#Clock_hands const axisDataItem = xAxis.makeDataItem({}); axisDataItem.set("value", 0); const bullet = axisDataItem.set("bullet", am5xy.AxisBullet.new(root, { sprite: am5radar.ClockHand.new(root, { radius: am5.percent(99) }) })); xAxis.createAxisRange(axisDataItem); axisDataItem.get("grid").set("visible", false); setInterval(() => { axisDataItem.animate({ key: "value", to: Math.round(Math.random() * 100), duration: 800, easing: am5.ease.out(am5.ease.cubic) }); }, 2000); // Make stuff animate on load chart.appear(1000, 100);