Отображение миграции d3js - проблема воссоздания примера - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь воссоздать этот пример: http://bl.ocks.org/cingraham/7663357#index.html

Проблема в том, что мои результаты показаны на рисунке. image

Я получаю ошибку:

TypeError: theState [0] [0] равен нулю

Но так как я просто копирую код, почему я вообще получаю эту ошибку? а может кто-нибудь помочь мне разобраться как это исправить?

Спасибо

Отредактировано:

Именно здесь (ниже), где код создает проблемы ... Специально не вводить .attr("stroke-width", function(d, i) {.

function clicked(selected) {

    var selname = selected.id;
    var homex = path.centroid(selected)[0];
    var homey = path.centroid(selected)[1];
    g.selectAll(".goingline")
        .attr("stroke-dasharray", 0)
        .remove()
    g.selectAll(".goingline")
        .data(going)
        .enter().append("path")
        .attr("class", "goingline")
        .attr("d", function(d, i) {
            var abb = d.abbrev;     
            var finalval = coming[i][selname] - going[i][selname];
            var theState = d3.select("#" + abb); 
            if (!isNaN(finalval)) {
                var startx = path.centroid(theState[0][0].__data__)[0];
                var starty = path.centroid(theState[0][0].__data__)[1];
                if (finalval > 0) {
                    return "M" + startx + "," + starty + " Q" + (startx + homex) / 2 + " " + (starty + homey) / 1.5 + " " + homex + " " + homey;
                } 
                else {
                    return "M" + homex + "," + homey + " Q" + (startx + homex) / 2 + " " + (starty + homey) / 2.5 + " " + startx + " " + starty;
                }
            }
        })
        .call(transition)
        .attr("stroke-width", function(d, i) {
            var finalval = coming[i][selname] - going[i][selname]; console.log("test1")
                return lineSize(parseFloat(Math.abs(finalval)));
        })
        .attr("stroke", function(d, i) {
            var finalval = coming[i][selname] - going[i][selname]; console.log("test1")
            if (finalval > 0) {
                return "#65a89d";
            }
            else {
                return "#a96a46";
            }
        })
        .attr("fill", "none")
        .attr("opacity", 0.5)
        .attr("stroke-linecap", "round")
        .on("mouseover", function(d){
            return toolOver2(d, this);
        })
        .on("mousemove", function(d, i){
            var m = d3.mouse(this);
            mx = m[0];
            my = m[1];
            return toolMove2(mx, my, selname, d.state, coming[i][selname],     going[i][selname]);
        })
        .on("mouseout", function(d) {
            return toolOut2(d, this);
        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...