根据形状隐藏nvd3.js散点图中的数据点
Hide data points in nvd3.js scatter chart by shape
我在nvd3.js中成功构建了一个带有几个系列的散点图。Nvd3.js提供了打开/关闭由我的数据中的"键"定义的系列的机制。是否有可能通过指定的形状(即十字,圆形等)做同样的事情?我能够以复杂的方式选择具有形状的所有数据点:
var series = d3.selectAll('.nv-series')
.data();
for (var i = 0; i < series.length; i++) {
var values = series[i].values;
for (var j = 0; j < values.length; j++) {
if (values[j].shape=='circle') {
// Do something with
}
}
}
但现在我不需要切换这些。属性"禁用"似乎只适用于系列,而不适用于单个数据点。这里我需要一些类似的东西,这样在隐藏数据点之后,图表就会得到正确的对齐。感谢任何帮助,因为我绝对不是javascript专家,即使经过长时间的研究,也无法在网上找到任何东西。
您可以使用filter
向下选择到您想要的元素(而不是循环),然后使用css隐藏您想要隐藏的形状。
d3.selectAll('.nv-point').filter(function(d){ return d.shape === 'circle' })
.classed('hidden-point', true);
在这个例子中,hidden-point
类将包含visibility: none
或一些类似的样式,用该类隐藏点。d3.selectAll('.hidden-point').classed('hidden-point', false)
将显示所有隐藏点
我现在用一个变通的解决方案(保留两个数据结构,allData和filteredData,并过滤allData的克隆版本):
//clone data
filteredData = jQuery.extend(true, {}, allData);
for (var i = 0; i < filteredData.length; i++) {
var values = filteredData[i].values;
for (var j = 0; j < values.length; j++) {
if (values[j].shape!=shape) {
filteredData[i].values.splice(j,1);
j--;
}
}
}
d3.select('#test1 svg').datum(filteredData);
chart.update();
这样做,整个图得到更新。有一些错误抛出控制台,但除了一些小的渲染问题,它似乎工作。
相关文章:
- 将工具提示添加到d3散点图中
- 具有多个数据集的分组散点图D3
- d3.js散点图中的刻度标签在Firefox 13.0.1中被截断
- 在D3散点图圆上添加标签
- 在NVD3散点图上绘制标签
- 高图表散点图:点击事件时的警报坐标
- 如何从javascript散点图中的另一个变量为x和y添加新值
- d3.js可以使用来自同一来源的数据在同一张图上绘制两个散点图吗
- 谷歌散点图-{role:'style'}{role:#39;工具提示'}不能以JSON形式工作
- d3js散点图自动更新不起作用
- 使用d3制作交互式散点图
- 点的颜色在 D3.js散点图上的 10 个数据集后重复
- 将数据复制到 JavaScript D3 中的数组.js然后绘制散点图
- 利用数据生成散点图采用d3转换法
- 如何使用时间序列数据绘制高架图散点图
- 将ds.js散点图绑定到JSON数据
- 根据d3js中的数据id在散点图中选择点
- ExtJS散点图,根据数据中的标志突出显示某些点
- D3 散点图突出显示与特定数据条件匹配的所有点
- 如何指示高图散点图打印所有数据标签