javascript - 具有多个图的 D3 转换

标签 javascript d3.js transition

我正在尝试添加一个下拉菜单来选择要绘制图表的度量。我有 8 个图表,所有图表都以相同的衡量标准绘制,但按不同的种族划分。下面是代码,对我做错了什么有什么想法吗?现在我收到错误exit() is not a function

好吧,我在以下方面取得了一些进展,但仍然有点不稳定。图表正在发生变化,但正在脱离图表 - yAxis 正在重新缩放到所有图表的最大值,而不是本 map 表。:

function updateGraphs(newData) {


    d3.selectAll("svg").each(function(d, i){

        eachRace = d.values;
        svg = d3.select(this);
        yMax = d3.max(eachRace, function(d) { return d[newData]; });
        yScale = d3.scale.linear().domain([0, yMax*1.25]).range([height/8, 0]).nice();
        yAxis = d3.svg.axis().scale(yScale).orient("left").ticks(5);

        line = d3.svg.line()
        .x(function (d) { return x(d.date); })
        .y(function (d) { return yScale(d[newData]); })

        d3.transition().duration(1000).selectAll(".line")
        .attr("id", function(d) { return d.key ;})
        .attr('class', 'line')
        .attr('opacity', .8)
        .attr('d', function(d) { return line(d.values); })

        d3.selectAll(".y.axis")
        .call(yAxis);

    });
}

var svgContainer = d3.select("body").selectAll("svg")
    .data(data2)

    svgContainer.enter()
    .append("svg")
        .attr("width", 150)
        .attr("height", 400)
        .attr("transform", "translate(" + margin.left + "," + margin.top+ ")");

    d3.selectAll("svg").each(function(d, i){

        var eachRace = d.values;
        var svg = d3.select(this);
        var yMax = d3.max(eachRace, function(d) { return d.app; });
        var yScale = d3.scale.linear().domain([0, yMax*1.25]).range([height/8, 0]).nice();
        var yAxis = d3.svg.axis().scale(yScale).orient("left").ticks(5);

        var line = d3.svg.line()
        .x(function (d) { return x(d.date); })
        .y(function (d) { return yScale(d.app); })

        svg.append("path")
        .attr("id", function(d) { return d.key ;})
        .attr('class', 'line')
        .attr('opacity', .8)
        .attr('d', function(d) { return line(d.values); })

        svg.append("g")
        .attr("class", "y axis")
        .call(yAxis);


    });

最佳答案

感谢 JSBob 与我合作。我已经可以使用它了:

函数 updateGraphs(newData) {

d3.selectAll("svg").each(function(d, i){

    eachRace = d.values;
    svg = d3.select(this);
    yMax = d3.max(eachRace, function(d) { return d[newData]; });
    yScale = d3.scale.linear().domain([0, yMax*1.25]).range([height/8, 0]).nice();
    yAxis = d3.svg.axis().scale(yScale).orient("left").ticks(5);
    console.log(yMax);
    line = d3.svg.line()
    .x(function (d) { return x(d.date); })
    .y(function (d) { return yScale(d[newData]); })

    svg.transition().duration(1000).select(".line")
    .attr("id", function(d) { return d.key ;})
    .attr('class', 'line')
    .attr('opacity', .8)
    .attr('d', function(d) { return line(d.values); });

    svg.transition().duration(1000).select(".y.axis")
    .call(yAxis);

});
}

关于javascript - 具有多个图的 D3 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31273342/

相关文章:

javascript - 嵌套元素(Web 组件)无法获取其模板

javascript - 使用 Javascript 将连续的元素组合在一起

javascript - 自动滚动到 Gridview asp.net 中最后插入的行

javascript - 动态更新d3条形图

javascript - jPlayer 和 IE10 - SCRIPT438 : Object doesn't support property or method 'jPlayer'

javascript - 尝试使用模块模式来安全地获取数据

javascript - R/Shiny 中的可拖动折线图

css - 首次在 IE 中使用时过渡运行速度较慢

javascript - 添加内容时动画 div

css - 我可以通过 CSS 获得打开和关闭的双向转换速度吗?