我不能用D3域和范围缩放我的字体大小......?

时间:2014-04-06 21:50:16

标签: javascript d3.js dns range font-size

我希望扩大这本书的标题'在我的下面的数据集中,取决于'周数'他们一直在畅销书排行榜上......所以如果它是一本书的第一周就在名单上,那么这个标题将出现在18pt,如果是这本书的第20周就是标题(或该周的最大数量)标题将出现在72pt。

E.g。我的数据集:

        var hardcover_fiction = [
            {
                title: "MISSING YOU",
                author: "Harlan Coben",
                rank: 1,
                last: 0,
                weeks: 1
            },
            {
                title: "RAISING STEAM",
                author: "Terry Pratchett",
                rank: 2,
                last: 0,
                weeks: 20
            }
        ];

E.g。我的D3代码:

            .style("font-size", function(d) { 
                return textScale(d.weeks) + "px";
            })


    var textScale = d3.scale.linear()
                              .domain([1, d3.max(hardcover_fiction.weeks)]
                              .range([18, 72]);

我很难过......任何帮助都会非常感激! :)

1 个答案:

答案 0 :(得分:1)

您未正确使用d3.max。第一个参数必须是一个数组。第二个(可选)参数是一个从数组中的每个元素中提取相关值的函数。

通话d3.max(hardcover_fiction.weeks)返回0,因为hardcover_fiction.weeks不存在。你需要

d3.max(hardcover_fiction, function(d){return d.weeks;})

您的代码段的其余部分应该按预期工作。