我想在散点图上绘制一些值,但是我不知道如何从数据中获取所需的值并散布到散点图上。我已经尝试了各种方法,但是我对d3还是陌生的,所以有点令人困惑。

我只是准备了一个小提琴,也许有人想看看吗?

数据的结构是

var data = [
    {"name":"comp","arr":[[1493301233000, 123, 456], [1493301234000, 3, 4], [1493301235000, 5, 6]]},
    {"name":"comp","arr":[[1493301236000, 11, 22]]},
    {"name":"dogg","arr":[[1493301238000, 33, 55], [1493301239000, 66, 88]]}];


hit me to get to the fiddle

最佳答案

希望这可以帮助您入门。我更新了Crossfilter和dc版本,以便可以在1.4中使用Crossfilter的新数组维功能,并且dc的行为更具可预测性。

摆弄小提琴(请在将来将所有代码放入问题中):

var data = [
    {"name":"comp","arr":[[1493301233000, 123, 456], [1493301234000, 3, 4], [1493301235000, 5, 6]]},
    {"name":"comp","arr":[[1493301236000, 11, 22]]},
    {"name":"dogg","arr":[[1493301238000, 33, 55], [1493301239000, 66, 88]]}
];
//arr[x][0] = 1493301233000         comes from getTime(), i guess it should be on the x-axis
//arr[x][1] = 123                               is not really important, would be nice if you see this value if you hover over a point
//arr[x][2] = 456                           is the value, i guess it should be on the y-axis


设置尺寸和组。数组元素(本身就是数组)将是您的维度键。

var cf = crossfilter(data);

var arrDim = cf.dimension(function(d){ return d.arr;}, true);
var arrGroup = arrDim.group();


设置您的散点图。我对x和y域进行了硬编码,并且没有将您的值转换为Dates。如果将dc.js转换为Date对象,它将表现得更好。使用访问器功能(在底部)告诉散点图,x(keyAccessor),y(valueAccessor)和悬停标签(title)使用什么值。

我相信,除非您设置brushOn(false),否则悬停标签将不会显示,因此您目前无法刷此图表进行过滤。

var scatter = dc.scatterPlot("#chart");

scatter
            .width(300)
            .height(300)
            .x(d3.scale.linear().domain([1493301233000, 1493301239000]))
      .y(d3.scale.linear().domain([0, 456]))
            .yAxisLabel("y")
            .xAxisLabel("x")
      .brushOn(false)
            .clipPadding(10)
            .dimension(arrDim)
            .excludedOpacity(0.5)
            .group(arrGroup)
      .valueAccessor(function(d) { return d.key[2]; })
      .keyAccessor(function(d) { return d.key[0]; })
      .title(function(d) { return d.key[1]; });

dc.renderAll();


工作示例:http://jsfiddle.net/esjewett/vunftfdn/1/

关于javascript - 使用多数组通过dc.js,d3和crossfilter在散点图上绘制数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43660672/

10-12 06:44