@jett
Чтобы добавить легенду к графику в D3.js, можно использовать метод d3.legend()
, который создает интерактивную легенду на основе данных, используемых для создания графика.
Вот пример использования метода d3.legend()
для добавления легенды к круговой диаграмме:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// Создание массива данных для круговой диаграммы var data = [ { label: "Apples", count: 20 }, { label: "Oranges", count: 15 }, { label: "Bananas", count: 10 }, { label: "Pears", count: 5 }, { label: "Grapes", count: 3 } ]; // Определение размеров и центра круговой диаграммы var width = 500, height = 500, radius = Math.min(width, height) / 2, centerX = width / 2, centerY = height / 2; // Создание SVG элемента var svg = d3.select("body") .append("svg") .attr("width", width) .attr("height", height); // Создание группы для круговой диаграммы var g = svg.append("g") .attr("transform", "translate(" + centerX + "," + centerY + ")"); // Определение цветов для секторов круговой диаграммы var color = d3.scaleOrdinal() .range(["#98abc5", "#8a89a6", "#7b6888", "#6b486b", "#a05d56"]); // Создание объекта для расчета углов секторов var pie = d3.pie() .value(function(d) { return d.count; }); // Создание объекта для отрисовки секторов var path = d3.arc() .outerRadius(radius - 10) .innerRadius(0); // Отрисовка секторов круговой диаграммы var arc = g.selectAll(".arc") .data(pie(data)) .enter().append("g") .attr("class", "arc"); arc.append("path") .attr("d", path) .attr("fill", function(d) { return color(d.data.label); }); // Создание легенды var legend = d3.legend() .shape("circle") .shapePadding(10) .scale(color) .labels(["Apples", "Oranges", "Bananas", "Pears", "Grapes"]); // Добавление легенды к SVG элементу svg.append("g") .attr("class", "legend") .attr("transform", "translate(" + (width - 200) + "," + 50 + ")") .call(legend); |
В этом примере мы создаем массив данных для круговой диаграммы, определяем размеры и центр круговой диаграммы, создаем SVG элемент, создаем группу для круговой диаграммы, определяем цвета для секторов круговой диаграммы, создаем
@jett
объекты для расчета углов секторов и отрисовки секторов. Затем мы отрисовываем секторы круговой диаграммы и добавляем легенду с помощью метода d3.legend().
Легенда создается с помощью метода shape(), в котором указывается форма маркера для каждого элемента легенды, shapePadding() для указания отступа между маркером и текстом, scale() для определения цветов для каждого элемента легенды и labels() для указания подписей к каждому элементу легенды.
Затем легенда добавляется к SVG элементу с помощью метода call(legend), который вызывает функцию legend и применяет ее к выбранному элементу.