选择要按数据值显示的数据

时间:2012-05-21 16:22:45

标签: javascript sql asp.net d3.js visualization

我从SQL引入数据并将其存储在隐藏标签中,然后使用D3作为散点图显示。我有一个x值标签,y值标签,半径标签,然后是第四个标签,我们将其称为设置标签。

基本上,我有七组数据,并希望一次只显示一组(用户可以选择下拉列表或单选按钮或任何选择要显示的按钮,这很容易)。 D3中有没有办法说只显示设定数据= X的点?

到目前为止,这是我的相关设置:

var x_data = $('.CostImport').text().split(',');
var y_data = $('.PriceImport').text().split(',');
var r_data = $('.SalesImport').text().split(',');
var c_data = $('.ZoneImport').text().split(',');

var data = [];

for (i = 0; i < x_data.length; i++) {
   data.push({ "x": x_data[i], "y": y_data[i], "c": c_data[i], "r": r_data[i] });
}


 vis.selectAll("circle")
            .data(data)
                .enter().append("svg:circle")
                    .attr("cx", function (d) { return x(d.x) })
                    .attr("cy", function (d) { return y(d.y) })
                    .attr("stroke-width", "none")
                    .attr("fill", function (d) { return c(d.c) })
                    .attr("fill-opacity", .75)
                    .attr("r", function (d) { return r(d.r) });

目前我按设定值着色数据,但它太繁忙且重叠。我意识到我可以为每个集合加载单独的标签和数据(例如x1_data,x2_data,....)但我希望在集合数量发生变化的情况下使其更加强大。

1 个答案:

答案 0 :(得分:0)

将最后一行更改为:

.attr("r", function (d) { if (d.c == 3) return r(d.r); else return 0 });

完美无缺。 SQL中的太多时间让我忘了加倍等于。