Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用d3和crossfilter javascript框架使用多数组JSON创建多列表_Javascript_Json_D3.js - Fatal编程技术网

如何使用d3和crossfilter javascript框架使用多数组JSON创建多列表

如何使用d3和crossfilter javascript框架使用多数组JSON创建多列表,javascript,json,d3.js,Javascript,Json,D3.js,我想使用crossfilter进行过滤,并想使用d3创建一个多列表。我有一个JSON文件从表中获取数据 我的JSON数组如下所示,我想使用交叉过滤器对元素进行分组,并使用d3呈现表 var myJSON = { Region [{ code : New-York, id : 1, centre : [{ name: xxx, id : 11 },{

我想使用crossfilter进行过滤,并想使用d3创建一个多列表。我有一个JSON文件从表中获取数据

我的JSON数组如下所示,我想使用交叉过滤器对元素进行分组,并使用d3呈现表

var myJSON = {
    Region [{
        code : New-York,
        id   : 1,
        centre : [{
            name: xxx,
            id : 11
            },{
            name: yyy,
            id : 12,   
            },{
            name: zzz,
            id : 13,   
            }]
        },        
        code : Florida,
        id   : 2,
        centre : [{
            name: aaa,
            id : 21
            },{
            name: bbb,
            id : 23,  
            }]
        },
        code : Tennessee,
        id   : 3,
        centre : [{
            name: ccc,
            id : 31
            }, {
            name: ddd,
            id : 32,  
            }, {
            name: eee,
            id : 33,  
            }, {
            name: fff,
            id : 34,  
            }]
        }
    }]
}
HTML页面

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <title>D3: Subselection Example</title>
    <script type="text/javascript" src="d3.js"></script>
    <style type="text/css">

    body {
      font: 13px sans-serif;
  }
  td, th {
    padding: 1px 25px 0px 1px;
    border: 1px black solid;
    width:80px;
}   
ul {
  list-style: none;
  font-weight: bold;
}

li {
  margin:  0.2em 0.0em;
  padding: 0.5em 1.0em;
  font-weight: normal;
}

</style>
</head>
<body>
<script type="text/javascript">
d3.json("Udashboard.json", function (error,data) {

function tabulate(data, columns) {
  var table = d3.select('body').append('table')
  var thead = table.append('thead')
  var tbody = table.append('tbody');

// append the header row
thead.append('tr')
.selectAll('th')
.data(columns).enter()
.append('th')
.text(function (column) { return column.id; });

// create a row for each object in the data
var rows = tbody.selectAll('tr')
.data(data.objects)
.enter()
.append('tr');

// create a cell in each row for each column
var cells = rows.selectAll('td')
.data(function (row) {
    return columns.map(function (column) {
      return { column: column.id, value: eval('row.'+column.key) };
  });
})
.enter()
.append('td')
.text(function (d) { return d.value; });

return table;
}

var columnFields = [ { id: "ID", key: "id" },
{ id: "Code", key: "region[0].code" },
{ id: "Name", key: "centre[0].name" } ];

console.log (data);
// render the table(s) 
tabulate(data, columnFields); // 2 column table
});

</script>

</body>
</html>
我们如何使用交叉过滤器js和d3 js实现这一点

任何帮助都可以接受

提前谢谢

这很简单!:)

伪代码:

data = []
for each region
 for each centre
  data.push(one data object like {region: "...", ...})
c = crossfilter(data)
r = c.dimension(function returning region name)
g = r.group(String)
allRegionsHist = g.top(Infinity)
for each allRegionsHist
 construct one column

谁能帮我一个忙吗?
data = []
for each region
 for each centre
  data.push(one data object like {region: "...", ...})
c = crossfilter(data)
r = c.dimension(function returning region name)
g = r.group(String)
allRegionsHist = g.top(Infinity)
for each allRegionsHist
 construct one column