我目前正在尝试在此示例中注入自己的数据,因此我正在创建自己的JSON文件。但我不太清楚链接值如何转换为颜色,特别是在对角线中。我认为这是在源代码中发生的:
function row(row) {
var cell = d3.select(this).selectAll(".cell")
.data(row.filter(function(d) { return d.z; }))
.enter().append("rect")
.attr("class", "cell")
.attr("x", function(d) { return x(d.x); })
.attr("width", x.rangeBand())
.attr("height", x.rangeBand())
.style(“fill-opacity”,function(d){return z(d.z);})
.style("fill", function(d) { return nodes[d.x].group == nodes[d.y].group ? c(nodes[d.x].group) : null; })
.on("mouseover", mouseover)
.on("mouseout", mouseout);
z属性应该表示链接值,因此该值越大,矩形的颜色越深。
所以我的两个问题是:
1)我们知道fill-opacity值介于0和1之间,链接值和fill-opacity值之间的转换是如何完成的?是否存在链接值的上限,高于该值,每个链接值将转换为填充不透明度值1?
2)关于对角线方块。它们应该代表角色和他自己之间的链接值(我称之为“autolink”)。我注意到在原始的JSON文件中,没有链接元素的源与目标相等,这意味着没有给出关于自动链接值的信息。那么它们是如何计算的?我们看到对角线方块有不同的值,但它们是如何计算的? 当我注入自己的数据时,我也注意到每个对角线方块的填充不透明度值等于1(它们都被完全填充)。奇怪的是,当我为任何自动链接指定一个值时,无论它是0还是100,我仍然会得到一个完全填充的正方形。
我希望我能理解,因为英语不是我的母语,我的问题很难用语言表达。
如果有人能以任何方式照亮我,我会非常高兴。
感谢。
答案 0 :(得分:1)
链接值和不透明度之间的转换是通过z
完成的,这是一个比例:
z = d3.scale.linear().domain([0, 4]).clamp(true)
如您所见,上限为4.
对角线方块的填充方式与其他所有方法相同 - 通过比较两个字符的组合。
.style("fill", function(d) { return nodes[d.x].group == nodes[d.y].group ? c(nodes[d.x].group) : null; })
在这种情况下,不仅群体而且实际角色相同这一事实也无关紧要。