首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >D3.js Focus+Context通过刷牙条形图-刷牙时重新计算BarWidth

D3.js Focus+Context通过刷牙条形图-刷牙时重新计算BarWidth
EN

Stack Overflow用户
提问于 2015-05-12 11:48:14
回答 2查看 322关注 0票数 1

我有一些问题与条形图与Focus+Context通过刷牙。效果很好,但我的问题是:

当我处理我的数据时,我用回收箱和我的图形的宽度来计算酒吧宽度。

代码语言:javascript
运行
复制
var data = d3.layout.histogram()
            .bins(x.ticks(bins))
            (values);

var numBins = data.length;
var barWidth = parseInt((width)/numBins) - 1;

为了保持一致性,在刷刷焦点图上的酒吧宽度时,应该增加(目前保持相同的宽度)。所以我需要重新计算酒吧的宽度。但我不知道该怎么做.

代码语言:javascript
运行
复制
function brushed() {

    x.domain(brush.empty() ? x2.domain() : brush.extent());
    focusGraph.attr("x", function(d, i) { return x(d.x); });
    focusGraph.attr("width", barWidth); // How can I calculate new barwidth?

    focus.select(".x.axis").call(xAxis);

}

在这里,代码:http://jsfiddle.net/qcLp6qu8/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-13 12:14:30

如果我能帮助某人,我会找到一个解决方案:)

http://jsfiddle.net/sx9myywh/

代码语言:javascript
运行
复制
function brushed() {
  x.domain(brush.empty() ? x2.domain() : brush.extent());
  var b = x(data[1].x)-x(data[0].x);
  var w = b-2;
  focusGraph.attr("x", function(d, i) { return x(d.x); });
  focusGraph.attr("width", w);

  focus.select(".x.axis").call(xAxis);
}
票数 1
EN

Stack Overflow用户

发布于 2015-05-12 12:10:09

试试这段代码,

代码语言:javascript
运行
复制
focusGraph.attr("width", width/(x.ticks().length));

x.ticks()将给出蜱的数组,.length将给出蜱的数量。若要计算条宽,请执行以下操作。总宽度按滴答数计算,这将给出滴答之间的空间,这必须是条形宽度。

见更新小提琴

希望这对你有用,如果不向我要更多.为更好的处理添加了一些代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30189975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档