我正在使用DC.JS散点图让用户选择兴趣点。如果使用弹性轴,则无法选择最高值。查看DC.JS示例(https://dc-js.github.io/dc.js/examples/scatter-brushing.html)。您无法选择左图或右图中的最高点。
在某些情况下,最高点或最低点正是人们需要选择的,因为这些是我们关心的异常值。如果禁用弹性轴并确保指定的范围高于最大值,则可以选择该点。
除了根据当前的最小值/最大值设置轴域并稍微扩展它们之外,还有其他解决方案吗?当最小值= 0时,这有时是丑陋的,现在你的域需要包含一些小的负数。
- 尼科
答案 0 :(得分:2)
总是当我遇到这个问题时,我手动将y域增加5%。 例如:
var balanceDomain = d3.scale.linear().domain([0, s.balanceDimension.top(1)[0].balance + (s.balanceDimension.top(1)[0].balance*0.05)]);
s.amountOverallScore
.width(400)
.height(400)
.x(someDomain)
.y(balanceDomain)
...
也许这不是最好的解决方案,但总能为我工作。 希望它有所帮助(=。
答案 1 :(得分:1)
在我的应用程序中,值始终为正,我使用以下内容来获得正确的行为:
// using reductio on the all_grp to get easy access to filtered min,max,avg,etc.
totalTimeMinValue = all_grp.top(1)[0].value.min;
totalTimeMaxValue = all_grp.top(1)[0].value.max;
// now use it to scale the charts we want
detail1_chart.y(d3.scale.linear().domain([totalTimeMinValue-1, totalTimeMaxValue+1]));
detail3_chart.y(d3.scale.linear().domain([totalTimeMinValue-1, totalTimeMaxValue+1]));
这使两个图表都处于下沉状态。另一个好处是我的相当大的点(符号大小= 15)不再被剪裁。
感谢罗杰。