【发布时间】:2017-06-02 18:56:54
【问题描述】:
我有一个由 5 列组成的数据集 -> 国家、ID、价值和部门。我能够使用值和国家/地区在 dc.js 中创建一个行图,其中国家是我的维度。
var rowChart = dc.rowChart('#rowChart');
d3.csv('data.csv', function(data){
data.forEach(function(d){
d.country = d.country;
d.id = d.id;
d.value = +d.value;
d.sector = d.sector;
});
var height = 300;
var width = 300;
var ndx = crossfilter(data)
var countryDim = data.dimension(function (d) {
return d.country;
});
var countryGroup = countryDim.group().reduceSum(function (d) {
return d.value
})
rowChart
.width(300)
.height(900)
.margins({top: 10, right: 10, bottom: -1, left: 30})
.dimension(countryDim)
.group(countryGroup)
.colors('#86BC25')
.ordering(function (d) { return -d.value; })
.elasticX(true)
.xAxis();
rowChart
.title(function (d) { return d.value;})
.renderTitleLabel(true)
.titleLabelOffsetX(10);
dc.renderAll();
});
这是我在 csv 中的数据
country,id,value,sector
USA,0982,10,high
AUS,0983,9,high
IND,0982,10,high
CHN,0982,8,high
CUB,0986,5,middle
FIN,0987,low
我尝试创建一个 jsfiddle,但似乎不起作用,抱歉我的第一次 http://jsfiddle.net/i8rice/2r76bjt7/4/
我希望能够创建两个带有复选框的下拉菜单。一个按国家过滤行图,另一个按部门过滤。因此,如果我首先在下拉菜单中按“高”过滤该行业,则行图将被过滤,而另一个下拉菜单应该只显示 5 个“高”国家。
我知道使用 dc.selectMenu 可以实现这一点,但我希望使用下拉复选框样式。我想知道 dc.js 是否可以做到这一点?
抱歉,我对提问以及 d3.js、dc.js 和 crossfilter 非常陌生。
【问题讨论】:
-
我猜你的意思是下拉菜单中的复选框。看起来您可能可以将 selectMenu 与 .multiple(true) 选项一起使用,然后使用像 multiple-select 这样的 jQuery 插件应用您想要的样式。
-
嗨@Gordon 我尝试使用 jQuery 进行样式设置,但它似乎不起作用。我设法让我的 jsfiddle 工作 jsfiddle.net/i8rice/2r76bjt7/16 。如果我在中定义我的 dc.selectMenu 而不是使用我试过 selectField.multiple('multiple') 还是不行,下拉列表中[全选]旁边没有显示任何值。
标签: d3.js dc.js crossfilter