使用D3繪制圖表(2)--繪制曲線


  上一篇是使用D3繪制畫布,這一篇的內容是在畫布上繪制曲線。

  1.之前的html代碼沒有變化,但是我還是貼出來

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" href="css/style.css" />
    </head>
    <body>
        <div id="container"></div>
    </body>
    <script type="text/javascript" src="js/d3.js" ></script>
    <script type="text/javascript" src="js/index.js" ></script>
</html>

  2.css樣式添加了path的樣式

#container {
    width: 500px;
    height: 250px;
    background-color: #ccc;
    margin: 0 auto;
    margin-top: 100px;
}

path{
    fill: none;
    stroke: cornflowerblue;
    stroke-width: 2px;
}

  3.主要代碼還是在js中實現的

var width = 500, height = 250, margin = {left:50, top:30, right:20,bottom:20},
g_width = width - margin.left - margin.right,
g_height = height - margin.top - margin.bottom;

//獲取div,向里面添加svg
var svg = d3.select("#container")
.append("svg:svg")//在“container”中插入svg
.attr("width", width)//設置svg的寬度
.attr("height", height)//設置svg的高度

//添加g元素
var g = d3.select("svg")
.append("g")
.attr("transform","translate("+margin.left+","+margin.top+")")

var data = [1,3,5,9,4,2,3,6,8]//定義一個數組,里面放置了一些任意數字
var scale_x = d3.scale.linear()//把曲線沿x軸按比例放大
.domain([0, data.length-1])
.range([0, g_width])
var scale_y = d3.scale.linear()//把曲線沿y軸按比例放大
.domain([0, d3.max(data)])
.range([0, g_height])


var line_generator = d3.svg.line()//d3中繪制曲線的函數
.x(function(d, i){return scale_x(i);})//曲線中x的值
.y(function(d){return scale_y(d);})//曲線中y的值
.interpolate("cardinal")//把曲線設置光滑

d3.select("g")
.append("path")
.attr("d", line_generator(data))

 

這些都是我在慕課網上邊學編寫的文章,沒什么基礎的同學也可以去慕課網上看看,還是蠻不錯的一個網站,可以邊學邊練習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM