我试图动态更改并行设置图表的尺寸,如前面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
提及? / p>
答案 0 :(得分:0)
有没有办法让并行集采用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,valu,我希望节点为并行节点采用不同的值,这样每组并行节点都有不同的节点大小 例如:
nodeP node Parallel to nodeP
] ]
]
具有不同的大小,因此连接它们的功能区从源节点到目标节点的大小各不相同。