比例尺

2018-07-09  本文已影响0人  一世长安乱
使用比例尺的散点图
var dataset = [
    [5, 20], [480, 90], [250, 50], [100, 33], [330, 95],
    [410, 12], [475, 44], [25, 67], [85, 21], [220, 88]
];
var h = 100;
var w = 500;
var padding = 20;
var svg = d3.select("body")
    .append("svg")
    .attr("width", w)
    .attr("height", h);
var xScale = d3.scaleLinear()           // 生成比例尺
    .domain([0, d3.max(dataset, function (d) {return d[0];})]) // 值域
    .range([padding, w - padding * 2]);  // 范围
var yScale = d3.scaleLinear()           // 生成比例尺
    .domain([0, d3.max(dataset, function (d) {return d[1];})]) // 值域
    .range([h - padding, padding]);
var rScale = d3.scaleLinear()
    .domain([0, d3.max(dataset, function (d) {return d[1];})])
    .rangeRound([2, 5]);
svg.selectAll("circle")
    .data(dataset)
    .enter()
    .append("circle")
    .attr("cx", function (d) {
        return xScale(d[0]);
    })
    .attr("cy", function (d) {
        return yScale(d[1]);
    })
    .attr("r", function (d) {
        return rScale(d[1]);
    });
svg.selectAll("text")
    .data(dataset)
    .enter()
    .append("text")
    .text(function (d) {
        return d[0] + "," + d[1];
    })
    .attr("x", function (d) {
        return xScale(d[0]);
    })
    .attr("y", function (d) {
        return yScale(d[1]);
    })
    .attr("font-family", "sans-serif")
    .attr("font-size", "11px")
    .attr("fill", "red");

其他方法

使用上述任何一个方法, 只要把它们连缀到定义原始比例尺的方法链即可。 比如,
要使用 nice(), 可以这样:

var scale = d3.scale.linear()
    .domain([0.123, 4.567])
    .range([0, 500])
    .nice();

其他比例尺

上一篇 下一篇

猜你喜欢

热点阅读