DC.js - точечная диаграмма
Диаграмма рассеяния - это разновидность математической диаграммы. Он представлен с помощью декартовых координат для отображения значений обычно двух переменных для набора данных. Данные отображаются в виде набора точек, причем точки могут быть окрашены. В этой главе подробно рассказывается о диаграмме рассеяния.
Методы точечной диаграммы
Прежде чем перейти к построению диаграммы рассеяния, мы должны понять dc.scatterPlotкласс и его методы. Dc.scatterPlot использует миксины для получения основных функций построения диаграммы. Примесь, используемая dc.scatterPlot, приведена ниже -
- dc.coordinateGridMixin
Полная диаграмма классов dc.scatterPlot выглядит следующим образом:
Dc.scatterPlot получает все методы указанных выше миксинов. У него есть собственные методы построения диаграммы рассеяния, которые объясняются следующим образом.
customSymbol ([символ])
Этот метод используется для получения или установки генератора символов.
emptySize ([размер])
Этот метод используется для установки или получения радиуса для символов, когда группа пуста.
excludedColor ([цвет])
Этот метод используется для получения или установки цвета символов, исключенных из фильтра диаграммы.
excludedOpacity ([непрозрачность])
Этот метод используется для получения или установки прозрачности для символов, исключенных из фильтра диаграммы.
excludedSize ([размер])
Он используется для установки или получения размера символов, исключенных из фильтра диаграммы.
HighlightSize ([размер])
Он используется для установки или получения радиуса для выделенных символов.
символ ([тип])
Он используется для получения или установки типа символа, используемого для каждой точки.
Нарисуйте точечную диаграмму
Нарисуем точечную диаграмму в DC. В этом примере давайте возьмем набор данных с именемhowell1.csvфайл. Пример файла данных выглядит следующим образом -
"height","weight","age","male"
151.765,47.8256065,63,1
139.7,36.4858065,63,0
136.525,31.864838,65,0
156.845,53.0419145,41,1
145.415,41.276872,51,0
163.83,62.992589,35,1
149.225,38.2434755,32,0
168.91,55.4799715,27,1
147.955,34.869885,19,0
165.1,54.487739,54,1
154.305,49.89512,47,0
...............
...............
В приведенном выше примере файла содержится много записей. Мы можем загрузить файл, щелкнув следующую ссылку и сохранив его в нашем DC.
howell1.csv
Теперь давайте выполним следующие шаги, чтобы нарисовать точечную диаграмму в DC.
Шаг 1. Определите переменную
Давайте определим переменную, как показано ниже -
var chart = dc.scatterPlot('#scatter');
Здесь функция scatterplot () отображается с разбросом идентификатора.
Шаг 2. Прочтите данные
Прочтите данные из файла howell1.csv, как показано ниже -
d3.csv("data/howell1.csv", function(errors, people) {
var mycrossfilter = crossfilter(people);
}
Если данных нет, то возвращается ошибка. Позже назначьте данные кросс-фильтру.
Шаг 3. Получите записи
Позвольте нам получить записи, используя кодировку, приведенную ниже -
people.forEach(function(x) {
if(x.male == 1) {
x.gender = "Male";
} else {
x.gender = "Female";
}
});
Здесь мы проверили пол.
Шаг 4. Задайте размер
Вы можете установить размер, используя кодировку, приведенную ниже -
var hwDimension = mycrossfilter.dimension(function(data) {
return [Math.floor(data.height), Math.floor(data.weight)];
});
После того, как размер был назначен, сгруппируйте пол, используя кодировку, приведенную ниже -
var hwGroup = hwDimension.group().reduceCount();
Шаг 5. Создайте диаграмму
Теперь сгенерируйте тепловую карту, используя код, приведенный ниже -
chart
.width(800)
.height(600)
.x(d3.scale.linear().domain([0,180]))
.y(d3.scale.linear().domain([0,100]))
.brushOn(false)
.xAxisLabel("Height")
.yAxisLabel("Weight")
.symbolSize(8)
.clipPadding(10)
.dimension(hwDimension)
.group(hwGroup);
Вот,
- Мы назначили ширину диаграммы 800 и высоту 600.
- Применена функция d3.scale.linear () для осей x и y.
- Включено значение brushOn как false.
- Затем назначьте метку оси X как высоту и метку оси Y как вес.
- Установите размер символа как восемь и значение заполнения как 10.
- Наконец, сгруппируйте данные и визуализируйте диаграмму.
Шаг 6: Рабочий пример
Полный список кода выглядит следующим образом. Создать веб-страницуscatter.html и внесите в него следующие изменения.
<html>
<head>
<title>Scatter plot Sample</title>
<link rel = "stylesheet" type = "text/css" href = "css/bootstrap.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 = "scatter"></div>
</div>
<script language = "javascript">
var chart = dc.scatterPlot('#scatter');
d3.csv("data/howell1.csv", function(errors, people) {
var mycrossfilter = crossfilter(people);
people.forEach(function(x) {
if(x.male == 1) {
x.gender = "Male";
} else {
x.gender = "Female";
}
});
var hwDimension = mycrossfilter.dimension(function(data) {
return [Math.floor(data.height), Math.floor(data.weight)];
});
var hwGroup = hwDimension.group().reduceCount();
chart
.width(800)
.height(600)
.x(d3.scale.linear().domain([0,180]))
.y(d3.scale.linear().domain([0,100]))
.brushOn(false)
.xAxisLabel("Height")
.yAxisLabel("Weight")
.symbolSize(8)
.clipPadding(10)
.dimension(hwDimension)
.group(hwGroup);
chart.render();
});
</script>
</body>
</html>
Теперь запросите браузер, и мы увидим следующий ответ.