zoukankan      html  css  js  c++  java
  • D3学习之坐标系绘制

    坐标轴的绘制我们需要搞清楚以下三个要点:

    1)、axis函数

    2)、.call()函数用于组合

    3)、坐标轴的平移旋转

    关于第三点其实就是"transform","translate(X,Y)"的含义和效果结合自己要求进行使用。

    <html>  
    <head>  
        <meta charset="utf-8">
        <title>坐标轴</title>  
     
        <style>
        .axis path,
        .axis line{
            fill: none;
            stroke: skyblue;
            shape-rendering: crispEdges;
      stroke-width: 3px;
        }
         
        .axis text {
            font-family: sans-serif;
            font-size: 11px;
        }
        .MyPath {
            fill: none;
            stroke: darkred;
            stroke-width: 2px;
        }
        </style>
     
    </head>
    <body> 
    <script src="https://cdn.bootcss.com/d3/3.5.15/d3.js"></script>
    <script>
     
    var svg = d3.select("body")
       .append("svg")
                .attr("width", 400)
                .attr("height", 400);//向body中添加了一个svg元素
    // 自定义数据
    var data = [12,25,28,56,96,56,45,78];
    //定义比例尺
        var xScale = d3.scale.linear()
                        .domain([0, data.length-1])
                        .range([0, 300]);
        var yScale = d3.scale.linear()
                        .domain([0, d3.max(data)])
                        .range([250, 0]);
     //使用axis函数来生成坐标轴的组合元素
        var xAxis = d3.svg.axis()
                    .scale(xScale)//坐标轴联立刻度尺,用于缩放
                    .orient("bottom");//该函数指定坐标轴刻度的方向
     var yAxis = d3.svg.axis()
                     .scale(yScale)
                     .orient("left");
     //插入坐标轴
        var gxAxis = svg.append("g")//添加一个g(group)元素,用于存放坐标轴的元素
                        .attr("class","axis")//添加一个类(类名叫axis),用于修饰坐标轴//其实无影响(非必需代码))
                        .attr("transform","translate(30,350)")
                        .call(xAxis);//添加x轴(关键代码,不可省略)
        var gyAxis = svg.append("g")
                        .attr("class","axis")
                        .attr("transform","translate(30,100)")
                        .call(yAxis);
     // //上面的代码还可以怎么写呢,其实完全可以这样来写
     // var xAxis = d3.svg.axis()
     //    .scale(xScale);
     // var yAxis = d3.svg.axis()
     //    .orient("left")
     //    .scale(yScale);
     // //不定义直接添加也是可以的
     // svg.append("g")
     //  .attr("transform","translate(30,350)")
     //  .call(xAxis);
     // svg.append("g")
     //  .attr("transform","translate(30,100)")
     //  .call(yAxis);
        //  线段生成器
        var line = d3.svg.line()
                .x( function(d,i){ return xScale(i); } )
                .y( function(d){ return yScale(d); } )
                .interpolate("cardinal");
        // 折线图
        svg.append("path")
            .attr("class","MyPath")
            .attr("d", line(data) )
            .attr("transform","translate(30,100)");
    </script>
    </body>  
    </html>  
  • 相关阅读:
    BZOJ1070: [SCOI2007]修车(最小费用最大流,思维)
    CF892D—Gluttony(思维,好题)
    BZOJ1005--[HNOI2008]明明的烦恼(树的prufer编码)
    HDU–5988-Coding Contest(最小费用最大流变形)
    【转】HDU 6194 string string string (2017沈阳网赛-后缀数组)
    【转】Codeforces Round #406 (Div. 1) B. Legacy 线段树建图&&最短路
    HDU6513/CCPC2017--A Secret(KMP)
    8.19-星期五
    CodeForces–830B--模拟,树状数组||线段树
    js实现360度图片旋转
  • 原文地址:https://www.cnblogs.com/gti2baby/p/11270885.html
Copyright © 2011-2022 走看看