d3.js Les Miserables Co-occurrence示例中链接值的表示

时间:2013-06-07 16:28:19

标签: json colors d3.js

我目前正在尝试在此示例中注入自己的数据,因此我正在创建自己的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,我仍然会得到一个完全填充的正方形。

我希望我能理解,因为英语不是我的母语,我的问题很难用语言表达。

如果有人能以任何方式照亮我,我会非常高兴。

感谢。

1 个答案:

答案 0 :(得分:1)

  1. 链接值和不透明度之间的转换是通过z完成的,这是一个比例:

    z = d3.scale.linear().domain([0, 4]).clamp(true)

    如您所见,上限为4.

  2. 对角线方块的填充方式与其他所有方法相同 - 通过比较两个字符的组合。

    .style("fill", function(d) { return nodes[d.x].group == nodes[d.y].group ? c(nodes[d.x].group) : null; })

  3. 在这种情况下,不仅群体而且实际角色相同这一事实也无关紧要。