美文网首页
d3 坐标轴

d3 坐标轴

作者: 一世长安乱 | 来源:发表于2018-07-09 14:32 被阅读0次
包含许多功能的坐标轴
<script type="text/javascript">
var dataset = [];
var numDataPoints = 50;
var xRange = Math.random() * 1000;
var yRange = Math.random() * 1000;
for (let i = 0; i < numDataPoints; i++) {
    let newNumber1 = Math.floor(Math.random() * xRange);
    let newNumber2 = Math.floor(Math.random() * yRange);
    dataset.push([newNumber1, newNumber2]);
}
var h = 300;
var w = 500;
var padding = 30;
// 规定数的格式,百分数加小数点后一位  12.5%
var formatAsPercentage = d3.format(".1%");
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 formatAsPercentage(d[0]) + "," + formatAsPercentage(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");
/*var xAxis = d3.axisBottom()
    .scale(xScale);
svg.append("g").call(xAxis);*/
// 生成坐标轴
svg.append("g")
    .attr("class", "axis")
    .call(d3.axisBottom()
            .scale(xScale))  // 粗略射纸刻度线数量
    .attr("transform", "translate(0, " + (h - padding) + ")");
svg.append("g")
    .attr("class", "axis")
    .call(d3.axisLeft()
        .scale(yScale))
    .attr("transform", "translate(" + padding + ")")
</script>
<style>
.axis path,
.axis line{
    fill: none;
    stroke: black;
    shape-rendering: crispEdges;
}

.axis text{
    font-family: sans-serif;
    font-size: 11px;
}
</style>

相关文章

网友评论

      本文标题:d3 坐标轴

      本文链接:https://www.haomeiwen.com/subject/dsttpftx.html