Я создаю панель, и формат данных, как например:dc.js - DataTable - объединение строк данных
var data = [
{"id": 'CDE', "count": 1, "name": 'ajdkf', "type": 'E', "state": 'A'},
{"id": 'CDE', "count": 0, "name": 'ajdkf', "type": 'E', "state": 'A'},
{"id": 'CDE', "count": 0, "name": 'ajdkf', "type": 'E', "state": 'A'},
{"id": 'CDE', "count": 0, "name": 'ajdkf', "type": 'E', "state": 'A'},
{"id": 'HFG', "count": 1, "name": 'ajdkf', "type": 'E', "state": 'B'},
{"id": 'HFG', "count": 0, "name": 'ajdkf', "type": 'E', "state": 'B'},
{"id": 'HFG', "count": 0, "name": 'ajdkf', "type": 'E', "state": 'B'},
{"id": 'HFG', "count": 0, "name": 'ajdkf', "type": 'E', "state": 'B'},
{"id": 'ABF', "count": 1, "name": 'ghedw', "type": 'G', "state": 'A'},
{"id": 'ABF', "count": 0, "name": 'ghedw', "type": 'G', "state": 'A'},
{"id": 'ABF', "count": 0, "name": 'ghedw', "type": 'G', "state": 'A'},
{"id": 'ABF', "count": 0, "name": 'ghedw', "type": 'G', "state": 'A'},
{"id": 'DEF', "count": 1, "name": 'huiqs', "type": 'E', "state": 'A'},
{"id": 'DEF', "count": 0, "name": 'huiqs', "type": 'E', "state": 'A'},
{"id": 'DEF', "count": 0, "name": 'huiqs', "type": 'E', "state": 'A'},
{"id": 'DEF', "count": 0, "name": 'huiqs', "type": 'E', "state": 'A'},
...
{"id": 'ABC', "count": 1, "name": 'asbsd', "type": 'D', "state": 'B'},
{"id": 'ABC', "count": 0, "name": 'asbsd', "type": 'D', "state": 'B'},
{"id": 'ABC', "count": 0, "name": 'asbsd', "type": 'D', "state": 'B'},
{"id": 'ABC', "count": 0, "name": 'asbsd', "type": 'D', "state": 'B'}
];
Я пытаюсь создать таблицу, которая выглядит как:
Name State A Count State B Count
ajdkf 1 1
ghedw 1 0
huiqs 1 0
asbsd 0 1
я в настоящее время:
<body>
<div style='clear:both;'>
<table id="Stats">
<thead>
<tr class="header">
<th> name </th>
<th> State A Count </th>
<th> State B Count </th>
</tr>
</thead>
</table>
</div>
</body>
<script>
...
var dataTable = dc.dataTable("#Stats");
var dataTableDim = ndx.dimension(function(d) {return d.name;});
dataTable
.dimension(dataTableDim)
.group(function(d) {return d.name})
.columns([
function(d) { return d.name; },
function(d) { if (d.state == 'A') {return +d.count;} else {return 0;} },
function(d) { if (d.state == 'B') {return +d.count;} else {return 0;} },
]);
...
</script>
И это дает мне таблицу, которая выглядит следующим образом:
Name State A Count State B Count
asbsd
asbsd 0 1
asbsd 0 0
asbsd 0 0
asbsd 0 0
ajdkf
ajdkf 1 0
ajdkf 0 0
ajdkf 0 0
ajdkf 0 0
ajdkf 0 1
ajdkf 0 0
ajdkf 0 0
ajdkf 0 0
huiqs
huiqs 1 0
huiqs 0 0
huiqs 0 0
huiqs 0 0
ghedw
ghedw 0 0
ghedw 1 0
ghedw 0 0
ghedw 0 0
Что мне нужно сделать, чтобы получить таблицу, которую я желаю? Я хотел бы иметь под 2 «столбцов» «Государство A» (граф и проценты) и то же самое для государства В. Что-то вроде:
Name State A State B
Count Percent Count Percent
jsfiddle: https://jsfiddle.net/56hgjgsz/14/
я не мог получить скрипт читать внешние файлы, поэтому мне пришлось добавить их в js .. извините :((https://jsfiddle.net/56hgjgsz/29/)
Это «работает», но не уменьшает количество строк в таблице, а порядок обратный -> тот же адрес, но с/32/вместо/14/или/29/
oof, раздел «внешние ресурсы» в jsfiddle предназначен для указания на d3 и dc, вам не нужно включать источник! – Gordon
По какой-то причине это не сработало:/Извините, что – csymill26
Это действительно замедлило интерфейс скрипки; с которыми, должно быть, было очень тяжело работать! Также исправлено в моем обновленном ответе ниже. – Gordon