* ---------------------------------------
* This demo was created using amCharts 4.
* For more information visit:
* https://www.amcharts.com/
* Documentation is available at:
* https://www.amcharts.com/docs/v4/
* ---------------------------------------
am4core.useTheme(am4themes_animated);
var chart = am4core.create("chartdiv", am4plugins_forceDirected.ForceDirectedTree);
var networkSeries = chart.series.push(new am4plugins_forceDirected.ForceDirectedSeries());
{ name: "A1", value: 100 },
{ name: "A2", value: 60 }
{ name: "B1", value: 135 },
{ name: "B2", value: 98 }
{ name: "EE1", value: 130 },
{ name: "EE2", value: 87 },
{ name: "EE3", value: 55 }
{ name: "C2", value: 148 },
{ name: "CC1", value: 53 },
{ name: "CC2", value: 30 }
{ name: "C4", value: 26 }
{ name: "D1", value: 415 },
{ name: "D2", value: 148 },
{ name: "D3", value: 89 }
{ name: "EE1", value: 33 },
{ name: "EE2", value: 40 },
{ name: "EE3", value: 89 }
networkSeries.dataFields.value = "value";
networkSeries.dataFields.name = "name";
networkSeries.dataFields.children = "children";
networkSeries.nodes.template.tooltipText = "{name}:{value}";
networkSeries.nodes.template.fillOpacity = 1;
networkSeries.nodes.template.label.text = "{name}";
// networkSeries.nodes.template.label.verticalCenter = "bottom";
// networkSeries.nodes.template.label.dy = -15;
// networkSeries.nodes.template.label.fill = am4core.color("#000");
networkSeries.nodes.template.label.adapter.add("fill", function (fill, target) {
if (target.dataItem.level > 0) {
target.verticalCenter = "bottom";
return am4core.color("#000");
networkSeries.fontSize = 10;
networkSeries.links.template.strokeWidth = 1;
var hoverState = networkSeries.links.template.states.create("hover");
hoverState.properties.strokeWidth = 3;
hoverState.properties.strokeOpacity = 1;
networkSeries.nodes.template.events.on("over", function (event) {
event.target.dataItem.childLinks.each(function (link) {
if (event.target.dataItem.parentLink) {
event.target.dataItem.parentLink.isHover = true;
networkSeries.nodes.template.events.on("out", function (event) {
event.target.dataItem.childLinks.each(function (link) {
if (event.target.dataItem.parentLink) {
event.target.dataItem.parentLink.isHover = false;