amcharts изменяет цвет заливки для массива идентификаторов

#javascript #amcharts4

#javascript #amcharts4

Вопрос:

В то время как документация для amcharts4 предоставляет указание для заполнения полигонов цветами:

 chart.backgroundSeries.mapPolygons.template.polygon.fill = am4core.color("#aadaff");
 

Не совсем очевидно, как можно иметь альтернативные цвета, работающие с наборами предварительно загруженных данных. Предполагая, что для набора полигонов страны:

 black_filled_polygon.ids =  ["BR", "CA", "CN", "HR", "DK"]
pink_filled_polygon.ids =  ["NO", "PH", "PL", "PT", "ZA"]
 

как их можно определить для взаимодействия am4core , возможно, как отдельный скрипт, определяющий переменную, чтобы провести чистый рефакторинг кода и сгенерировать отдельный цвет заливки?

Ответ №1:

Вам не нужно было бы раскрашивать polygon элемент a MapPolygon , только сам шаблон MapPolygon или шаблон серии, т. Е. Вместо

 chart.backgroundSeries.mapPolygons.template.polygon.fill = am4core.color("#aadaff");
 

вы бы сделали (обратите внимание на отсутствие .polygon ):

 chart.backgroundSeries.mapPolygons.template.fill = am4core.color("#aadaff");
 

(не уверен, почему backgroundSeries установлено как свойство chart ?)

Вы можете сопоставить цвета с идентификаторами полигонов с помощью привязки полей свойств к полям в данных, например

 var black_filled_polygon_ids =  ["BR", "CA", "CN", "HR", "DK"]
var pink_filled_polygon_ids =  ["NO", "PH", "PL", "PT", "ZA"]
var data = [];


black_filled_polygon_ids.map(function(id) {
  data.push( {
    id: id,
    color: "black"
  });
});
pink_filled_polygon_ids.map(function(id) {
  data.push( {
    id: id,
    color: "pink"
  });
});

polygonTemplate.propertyFields.fill = "color";
polygonSeries.data = data;
 

Вот демонстрация:

https://codepen.io/team/amcharts/pen/062babaa4fec26c87c74c8dd5a885e42