javascript - 使用 D3js 并行集动态添加或删除尺寸

标签 javascript d3.js

我正在尝试动态更改并行集图表的尺寸,如之前在 question 中所要求的那样.

我正在使用 Jason Davies 创建的可重复使用的图表: http://www.jasondavies.com/parallel-sets/

我使用以下代码创建图表:

var chart = d3.parsets()
      .dimensions(["Survived", "Sex", "Age", "Class"]);

var vis = d3.select("#vis").append("svg")
    .attr("width", chart.width())
    .attr("height", chart.height());

d3.csv("titanic.csv", function(error, csv) {
  vis.datum(csv).call(chart);
});

我创建了一个按钮,单击该按钮时应调用一个函数change,该函数应将尺寸更改为[“Survived”,“Sex”,“Class”]

功能:

function change() {
    vis.call(chart.dimensions(["Survived", "Sex", "Class"]));
}

调用该函数时,我在第 90 行收到错误 Uncaught TypeError: Cannot read property 'hasOwnProperty' of undefined,该错误位于可重用图表中的 updateDimensions 函数内.

任何人对此都有解决方案,或者我应该通过使用解决方法来解决它,方法是创建一个具有新尺寸的新 svg 对象并删除旧的,如 user1386906 在之前询问的评论中提到的问题?

最佳答案

有没有办法让并行集采用数据实体的 json 中的不同值 我用一些随机数生成器做了

 svg.datum(data)
      .call(chart
        .value(function(d, i) {
            var v1, v2, v3;
            v1 = d["Valu"];
            v2 = d["Val"];enter code here
            v3 = d["Value"];
            console.log(v1);
            console.log(v2);
            console.log(v3);
            var x = Math.floor((Math.random() * 10) + 1);
            if (x < 5) {
                return v2;
            } else {
                return v3;
            }

        })
        .mapLevel(levelMap)
        .dimensions(arrayOfDimensions)
        //dimensions to be displayed by chart. (i.e "Cost Item", "Location" etc)
    );

有三个不同的值,分别命名为 Value、val、value ,我希望并行节点的节点取不同的值,使得每组并行节点具有不同大小的节点 示例:

nodeP        node Parallel to nodeP
]             ]
]

具有不同的大小,因此连接它们的功能带从源节点到目标节点具有不同的大小。

关于javascript - 使用 D3js 并行集动态添加或删除尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941915/

相关文章:

javascript - D3 - 堆积条形图显示图表中的错误数据

Javascript D3-fetch 写入 csv

javascript - 无法从带有箭头的 D3 力定向图中删除链接

javascript - 图标显示不正确

javascript - 立即生效并将所有英文数字替换为阿拉伯数字的功能

javascript - 如何删除使用 jQuery.bind 创建的事件处理程序?

javascript - 使用 updateFromJS 会在应该添加值时替换值

javascript - 如何从nodejs调用外部api

javascript - Safari 对日期时间字符串的解释与 Chrome 不同

javascript - 将数据传递给 D3 函数 - Ext JS 4.2.2