Круговая диаграмма представляет собой круговой статистический график. Это разделено на части, чтобы показать числовую пропорцию. В этой главе подробно описывается, как нарисовать круговую диаграмму с использованием DC.js.
Методы круговой диаграммы
Прежде чем приступить к рисованию круговой диаграммы, мы должны понять класс dc.pieChart и его методы. В dc.pieChart используются миксины для получения основных функций рисования диаграммы. Миксины, используемые dc.pieChart, следующие:
- baseMixin
- capMixin
- colorMixin
Полная диаграмма классов dc.pieChart выглядит следующим образом:
Dc.pieChart получает все методы указанных выше миксинов, а также имеет свои собственные методы для точного построения круговой диаграммы. Они заключаются в следующем —
- cx ([cx])
- drawPaths ([путь])
- emptyTitle ([название])
- externalLabels ([ярлык])
- innerRadius ([innerRadius])
- minAngleForLabel ([minAngleForLabel])
- радиус ([радиус])
- slicesCap ([cap])
Давайте обсудим каждый из них в деталях.
cx ([cx])
Он используется для получения или установки координаты центра х, которая определена ниже —
chart.cx = function (cx) { if (!arguments.length) { return (_cx || _chart.width() / 2); } };
Точно так же вы можете выполнить координату Y.
drawPaths ([путь])
Этот метод используется для рисования путей для круговой диаграммы и определен ниже —
chart.drawPaths = function (path) { if (arguments.length === 0) { return path; } };
emptyTitle ([название])
Этот метод используется для установки заголовка, когда нет данных. Это определено ниже —
chart.emptyTitle = function (title) { if (arguments.length === 0) { return title; } };
externalLabels ([ярлык])
Он используется для позиционирования меток среза со смещением от внешнего края диаграммы. Это определено ниже —
chart.externalLabels = function (label) { if (arguments.length === 0) { return label; } };
innerRadius ([innerRadius])
Этот метод используется для получения или установки внутреннего радиуса круговой диаграммы. Если внутренний радиус больше 0px , то круговая диаграмма будет отображаться как кольцевая диаграмма. Это определено ниже —
_chart.innerRadius = function (innerRadius) { if (!arguments.length) { return _innerRadius; } };
minAngleForLabel ([minAngleForLabel])
Этот метод используется для получения или установки минимального угла среза для отрисовки метки. Это определено ниже —
_chart.minAngleForLabel = function (minAngleForLabel) { if (!arguments.length) { return _minAngleForLabel; } _minAngleForLabel = minAngleForLabel; return _chart; };
радиус ([радиус])
Этот метод используется для получения или установки внешнего радиуса. Если радиус не указан, то он займет половину минимальной ширины и высоты диаграммы. Это определено ниже —
_chart.radius = function (radius) { if (!arguments.length) { return _givenRadius; } _givenRadius = radius; return _chart; };
slicesCap ([cap])
Получает или задает максимальное количество срезов, которые сгенерирует круговая диаграмма. Верхние срезы определяются значением от высокого до низкого. Другие срезы, превышающие верхний предел, будут свернуты в один срез «Другие».
Нарисуйте круговую диаграмму
Давайте создадим круговую диаграмму в DC. В этом примере круговой диаграммы давайте возьмем набор данных с именем people.csv . Пример файла данных выглядит следующим образом:
id,name,gender,DOB,MaritalStatus,CreditCardType 1,Damaris,Female,1973-02-18,false,visa-electron 2,Barbe,Female,1969-04-10,true,americanexpress 3,Belia,Female,1960-04-16,false,maestro 4,Leoline,Female,1995-01-19,true,bankcard 5,Valentine,Female,1992-04-16,false, 6,Rosanne,Female,1985-01-05,true,bankcard 7,Shalna,Female,1956-11-01,false,jcb 8,Mordy,Male,1990-03-27,true,china-unionpay .................... .................... ....................
Приведенный выше пример содержит много записей. Вы можете скачать файл, щелкнув по следующей ссылке, и сохранить его в папке DC.
Теперь давайте придерживаться следующих шагов, чтобы нарисовать круговую диаграмму в DC.
Шаг 1. Включите скрипт
Давайте добавим D3, DC и Crossfilter, используя следующий код —
<script src = "js/d3.js"></script> <script src = "js/crossfilter.js"></script> <script src = "js/dc.js"></script>
Шаг 2: Определите переменную
Создайте объект типа dc.pieChart, как показано ниже —
var pieChart = dc.pieChart('#pie');
Здесь идентификатор пирога отображается с помощью пирога.
Шаг 3: Чтение данных
Прочитайте ваши данные (скажем, из people.csv) с помощью функции d3.csv () . Это определяется следующим образом —
d3.csv("data/people.csv", function(errors, people) { console.log(people); }
Здесь, если файл данных недоступен в указанном месте, функция d3.csv () возвращает ошибку.
Шаг 4: Определите перекрестный фильтр
Определите переменную для Crossfilter и назначьте данные для Crossfilter. Это определено ниже —
var mycrossfilter = crossfilter(people);
Шаг 5: Создайте измерение
Создайте измерение для пола, используя функцию ниже —
var genderDimension = mycrossfilter.dimension(function(data) { return data.gender; });
Здесь Пол людей используется для измерения.
Шаг 6: ReduceCount ()
Создайте группу Crossfilter, применив group () и функцию reduCount () к созданному выше гендерному измерению — groupDimension .
var genderGroup = genderDimension.group().reduceCount();
Шаг 7: создать пирог
Генерация пирога с помощью функции ниже —
pieChart .width(800) .height(300) .dimension(genderDimension) .group(genderGroup) .on('renderlet', function(chart) { chart.selectAll('rect').on('click', function(d) { console.log('click!', d); }); }); dc.renderAll();
Вот,
-
Ширина круговой диаграммы установлена на 800.
-
Высота круговой диаграммы установлена на 300.
-
Измерение круговой диаграммы устанавливается на гендерное измерение с использованием метода dimension ().
-
Группа круговой диаграммы устанавливается на гендерную группу с помощью метода group ().
-
Добавлено событие click для регистрации данных с помощью встроенного события DC.js renderlet () . Рендлет вызывается всякий раз, когда диаграмма отображается или рисуется.
Ширина круговой диаграммы установлена на 800.
Высота круговой диаграммы установлена на 300.
Измерение круговой диаграммы устанавливается на гендерное измерение с использованием метода dimension ().
Группа круговой диаграммы устанавливается на гендерную группу с помощью метода group ().
Добавлено событие click для регистрации данных с помощью встроенного события DC.js renderlet () . Рендлет вызывается всякий раз, когда диаграмма отображается или рисуется.
Шаг 8: Рабочий пример
Создайте новый HTML-файл pie.html и включите все вышеперечисленные шаги, как показано ниже:
<html> <head> <title>DC.js Pie Chart Sample</title> <link rel = "stylesheet" type = "text/css" href = "css/bootstrap.min.css"> <link rel = "stylesheet" type = "text/css" href = "css/dc.css"/> <script src = "js/d3.js"></script> <script src = "js/crossfilter.js"></script> <script src = "js/dc.js"></script> </head> <body> <div> <div id = "pie"></div> </div> <script language = "javascript"> var pieChart = dc.pieChart('#pie'); d3.csv("data/people.csv", function(errors, people) { console.log(people); var mycrossfilter = crossfilter(people); // gender dimension var genderDimension = mycrossfilter.dimension(function(data) { return data.gender; }); var genderGroup = genderDimension.group().reduceCount(); pieChart .width(800) .height(300) .dimension(genderDimension) .group(genderGroup) .on('renderlet', function(chart) { chart.selectAll('rect').on('click', function(d) { console.log('click!', d); }); }); dc.renderAll(); }); </script> </body> </html>
Теперь запросите браузер, и мы увидим следующий ответ.