javascript - 按 D3 中的菜单按钮后调用轴

标签 javascript d3.js

我正在尝试用 http://bl.ocks.org/mbostock 中的示例自学 D3 .

我获取了散点图,并尝试根据事件的菜单项加载各种数据。

一切工作正常,但我遇到了一个无法解决的问题。 xAxis 应根据链接到菜单项的数据值进行 self 更新。

我在网上搜索答案,但找不到适合我的答案。

我认为问题(和解决方案)在于这部分代码;

function updateChart() {
    svg.selectAll('.dot')
        .transition()
        .duration(1000)
        .attr('cx', function(d) {
            return x(d.data[parameter]);

        })

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

}

我做了这个JSFiddle使其更容易理解。

最佳答案

事情是这样的。

  • 您在第一次运行中就成功生成了具有正确 x 比例的 xAxis,但是
  • 您没有使用新的数据域更新您的 xAxis

你是对的,每当你点击标签时,你都必须重新更新你的体重秤。

我做了几件事:

  • 在强制转换数字后添加一个 sourceData 变量,以供所有函数引用
  • 添加 updateXScale(data) 函数,该函数将仅更新您的 x 秤的
  • 每次单击标签时都会调用它。这不仅可以修复您的 x 比例,还可以正确缩放 .dot 的 x 坐标。

这就是它的整体样子。我创建了一个fiddle其中有您的示例的工作版本。

这是您的 updateChart 函数供引用:

function updateChart() {
  updateXScale(sourceData);

  svg.selectAll('.dot')
    .transition()
    .duration(1000)
    .attr('cx', function(d) {
      return x(d.data[parameter]);
    });
  svg.select(".x.axis")
    .call(xAxis);

}

关于javascript - 按 D3 中的菜单按钮后调用轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27553034/

相关文章:

javascript - JQuery 在多个 Div 上显示/隐藏

javascript - jquery 在 li 之间导航时为 ul 触发鼠标

javascript - 为什么 onmouseover 有效,但 onkeydown 无效?

javascript - 如何按属性过滤对象数组?

javascript - JSON.stringify() 数组与 Prototype.js 的奇怪之处

javascript - 如何选择特定元素后面的元素的所有内容?

javascript - d3.js 可以使用来自同一来源的数据在同一张图上绘制两个散点图吗?

javascript - 如何通过添加总计和排序进行自动类型推断

javascript - D3力图渲染节点和链接

javascript - D3 单调插值导致小循环