Dynamically changing legend position
This short tutorial will show the steps involved in dynamically changing position of the legend.
Changing position
Section titled “Changing position”The following steps are involved when changing the position of the legend, e.g. from bottom to left:
- Move the legend’s position in the
chart.childrenlist as/if needed. - Change chart’s layout to horizontal if required.
- Update settings of the legend so they are suitable for new layout.
For example, the below code will move the legend from bottom, to left:
chart.children.moveValue(legend, 0);chart.set("layout", root.horizontalLayout);legend.setAll({ x: 0, centerX: 0, centerY: am5.p50, y: am5.p50, layout: root.verticalLayout});chart.children.moveValue(legend, 0);chart.set("layout", root.horizontalLayout);legend.setAll({ x: 0, centerX: 0, centerY: am5.p50, y: am5.p50, layout: root.verticalLayout});/** * --------------------------------------- * 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 chart// https://www.amcharts.com/docs/v5/charts/xy-chart/var chart = root.container.children.push( am5xy.XYChart.new(root, { panX: false, panY: false, wheelX: "panX", wheelY: "zoomX", layout: root.verticalLayout }));
// Add legend// https://www.amcharts.com/docs/v5/charts/xy-chart/legend-xy-series/var legend = chart.children.push( am5.Legend.new(root, { centerX: am5.p50, x: am5.p50 }));
var data = [ { year: "2021", europe: 2.5, namerica: 2.5, asia: 2.1, lamerica: 1, meast: 0.8, africa: 0.4 }, { year: "2022", europe: 2.6, namerica: 2.7, asia: 2.2, lamerica: 0.5, meast: 0.4, africa: 0.3 }, { year: "2023", europe: 2.8, namerica: 2.9, asia: 2.4, lamerica: 0.3, meast: 0.9, africa: 0.5 }];
// Create axes// https://www.amcharts.com/docs/v5/charts/xy-chart/axes/var xAxis = chart.xAxes.push( am5xy.CategoryAxis.new(root, { categoryField: "year", renderer: am5xy.AxisRendererX.new(root, { cellStartLocation: 0.1, cellEndLocation: 0.9 }),
tooltip: am5.Tooltip.new(root, {}) }));
xAxis.data.setAll(data);
var yAxis = chart.yAxes.push( am5xy.ValueAxis.new(root, { renderer: am5xy.AxisRendererY.new(root, {}) }));
// Add series// https://www.amcharts.com/docs/v5/charts/xy-chart/series/function makeSeries(name, fieldName) { var series = chart.series.push( am5xy.ColumnSeries.new(root, { name: name, xAxis: xAxis, yAxis: yAxis, valueYField: fieldName, categoryXField: "year" }) );
series.columns.template.setAll({ tooltipText: "{name}, {categoryX}:{valueY}", width: am5.percent(90), tooltipY: 0 });
series.bullets.push(function () { return am5.Bullet.new(root, { locationY: 0.5, sprite: am5.Label.new(root, { text: "{valueY}", fill: root.interfaceColors.get("alternativeText"), centerY: am5.p50, centerX: am5.p50, populateText: true }) }); });
series.data.setAll(data); series.appear(); legend.data.push(series);}
makeSeries("Europe", "europe");makeSeries("North America", "namerica");makeSeries("Asia", "asia");makeSeries("Latin America", "lamerica");makeSeries("Middle East", "meast");makeSeries("Africa", "africa");
// Make stuff animate on load// https://www.amcharts.com/docs/v5/concepts/animations/chart.appear(1000, 100);
function moveLegend() { chart.children.moveValue(legend, 0); chart.set("layout", root.horizontalLayout); legend.setAll({ x: 0, centerX: 0, centerY: am5.p50, y: am5.p50, layout: root.verticalLayout });}<div id="chartdiv"></div><input type="button" value="move legend" onclick="moveLegend()" />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: 500px;}{ "type": "XYChart", "settings": { "panX": false, "panY": false, "wheelX": "panX", "wheelY": "zoomX", "layout": { "type": "VerticalLayout" } }, "properties": { "series": [ "#series-0", "#series-1", "#series-2", "#series-3", "#series-4", "#series-5" ], "xAxes": [ "#axis-0" ], "yAxes": [ "#axis-1" ] }, "children": [ { "type": "Legend", "settings": { "centerX": { "type": "Percent", "value": 50 }, "x": { "type": "Percent", "value": 50 } }, "properties": { "data": [ "#series-0", "#series-1", "#series-2", "#series-3", "#series-4", "#series-5" ] } } ], "refs": [ { "data-0": [ { "year": "2021", "europe": 2.5, "namerica": 2.5, "asia": 2.1, "lamerica": 1, "meast": 0.8, "africa": 0.4 }, { "year": "2022", "europe": 2.6, "namerica": 2.7, "asia": 2.2, "lamerica": 0.5, "meast": 0.4, "africa": 0.3 }, { "year": "2023", "europe": 2.8, "namerica": 2.9, "asia": 2.4, "lamerica": 0.3, "meast": 0.9, "africa": 0.5 } ] }, { "axis-0": { "type": "CategoryAxis", "settings": { "categoryField": "year", "renderer": { "type": "AxisRendererX", "settings": { "cellStartLocation": 0.1, "cellEndLocation": 0.9 } }, "tooltip": { "type": "Tooltip" } }, "properties": { "data": "#data-0" } } }, { "axis-1": { "type": "ValueAxis", "settings": { "renderer": { "type": "AxisRendererY" } } } }, { "series-0": { "type": "ColumnSeries", "settings": { "name": "Europe", "xAxis": "#axis-0", "yAxis": "#axis-1", "valueYField": "europe", "categoryXField": "year" }, "properties": { "data": "#data-0", "columns": { "properties": { "template": { "settings": { "tooltipText": "{name}, {categoryX}:{valueY}", "width": { "type": "Percent", "value": 90 }, "tooltipY": 0 } } } }, "bullets": [ { "type": "Bullet", "settings": { "locationY": 0.5, "sprite": { "type": "Label", "settings": { "text": "{valueY}", "fill": "@root.interfaceColors.get('alternativeText')", "centerY": { "type": "Percent", "value": 50 }, "centerX": { "type": "Percent", "value": 50 }, "populateText": true } } } } ] } } }, { "series-1": { "type": "ColumnSeries", "settings": { "name": "North America", "xAxis": "#axis-0", "yAxis": "#axis-1", "valueYField": "namerica", "categoryXField": "year" }, "properties": { "data": "#data-0", "columns": { "properties": { "template": { "settings": { "tooltipText": "{name}, {categoryX}:{valueY}", "width": { "type": "Percent", "value": 90 }, "tooltipY": 0 } } } }, "bullets": [ { "type": "Bullet", "settings": { "locationY": 0.5, "sprite": { "type": "Label", "settings": { "text": "{valueY}", "fill": "@root.interfaceColors.get('alternativeText')", "centerY": { "type": "Percent", "value": 50 }, "centerX": { "type": "Percent", "value": 50 }, "populateText": true } } } } ] } } }, { "series-2": { "type": "ColumnSeries", "settings": { "name": "Asia", "xAxis": "#axis-0", "yAxis": "#axis-1", "valueYField": "asia", "categoryXField": "year" }, "properties": { "data": "#data-0", "columns": { "properties": { "template": { "settings": { "tooltipText": "{name}, {categoryX}:{valueY}", "width": { "type": "Percent", "value": 90 }, "tooltipY": 0 } } } }, "bullets": [ { "type": "Bullet", "settings": { "locationY": 0.5, "sprite": { "type": "Label", "settings": { "text": "{valueY}", "fill": "@root.interfaceColors.get('alternativeText')", "centerY": { "type": "Percent", "value": 50 }, "centerX": { "type": "Percent", "value": 50 }, "populateText": true } } } } ] } } }, { "series-3": { "type": "ColumnSeries", "settings": { "name": "Latin America", "xAxis": "#axis-0", "yAxis": "#axis-1", "valueYField": "lamerica", "categoryXField": "year" }, "properties": { "data": "#data-0", "columns": { "properties": { "template": { "settings": { "tooltipText": "{name}, {categoryX}:{valueY}", "width": { "type": "Percent", "value": 90 }, "tooltipY": 0 } } } }, "bullets": [ { "type": "Bullet", "settings": { "locationY": 0.5, "sprite": { "type": "Label", "settings": { "text": "{valueY}", "fill": "@root.interfaceColors.get('alternativeText')", "centerY": { "type": "Percent", "value": 50 }, "centerX": { "type": "Percent", "value": 50 }, "populateText": true } } } } ] } } }, { "series-4": { "type": "ColumnSeries", "settings": { "name": "Middle East", "xAxis": "#axis-0", "yAxis": "#axis-1", "valueYField": "meast", "categoryXField": "year" }, "properties": { "data": "#data-0", "columns": { "properties": { "template": { "settings": { "tooltipText": "{name}, {categoryX}:{valueY}", "width": { "type": "Percent", "value": 90 }, "tooltipY": 0 } } } }, "bullets": [ { "type": "Bullet", "settings": { "locationY": 0.5, "sprite": { "type": "Label", "settings": { "text": "{valueY}", "fill": "@root.interfaceColors.get('alternativeText')", "centerY": { "type": "Percent", "value": 50 }, "centerX": { "type": "Percent", "value": 50 }, "populateText": true } } } } ] } } }, { "series-5": { "type": "ColumnSeries", "settings": { "name": "Africa", "xAxis": "#axis-0", "yAxis": "#axis-1", "valueYField": "africa", "categoryXField": "year" }, "properties": { "data": "#data-0", "columns": { "properties": { "template": { "settings": { "tooltipText": "{name}, {categoryX}:{valueY}", "width": { "type": "Percent", "value": 90 }, "tooltipY": 0 } } } }, "bullets": [ { "type": "Bullet", "settings": { "locationY": 0.5, "sprite": { "type": "Label", "settings": { "text": "{valueY}", "fill": "@root.interfaceColors.get('alternativeText')", "centerY": { "type": "Percent", "value": 50 }, "centerX": { "type": "Percent", "value": 50 }, "populateText": true } } } } ] } } } ]}dynamically-changing-legend-position