1. 程式人生 > >d3.js學習10----折線圖的製作

d3.js學習10----折線圖的製作

一切盡在註釋中………………

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>ZheXian</title>

<script type="text/javascript"src="d3.js"></script>

<link rel="stylesheet"type="text/css" href="bee.css" />     

</head>

<body>

<div id="part3">

</div>

<scripttype="text/javascript">

var dataset=[5,3,1,5,2,4,2];

varxMarks=['Mon','Tues','Wed','Thur','Fri','Sat','Sun'];

var w=600;

var h=400;

var title="Beijing";

var subTitle="temperature";

//定義畫布

var svg=d3.select("body")

.append("svg")

.attr("width",w)

.attr("height",h);

//新增標題

svg.append("g")

.append("text")

.text(title)

.attr("class","title")

.attr("x",220)

.attr("y",20);

//新增副標題

svg.append("g")

.append("text")

.text(subTitle)

.attr("class","subTitle")

.attr("x",220)

.attr("y",40);

//橫座標軸比例尺

var xScale = d3.scale.linear()

.domain([0,dataset.length-1])

.range([60,400]);//這個range相當於橫軸的左右平移

//縱座標軸比例尺

var yScale = d3.scale.linear()

.domain([0,d3.max(dataset)])

.range([220,60]);

//定義橫軸網格線

var xInner = d3.svg.axis()

.scale(xScale)

.tickSize(-160,0,0)//調整網格線長度

.orient("bottom")

.ticks(dataset.length);

//新增橫軸網格線

svg.append("g")

.attr("class","inner_line")

.attr("transform","translate(0," + 220 + ")")

//用來把縱的網格線上移的

.call(xInner)

.selectAll("text")

.text("");

//定義縱軸網格線

var yInner = d3.svg.axis()

.scale(yScale)

.tickSize(-340,0,0)

.tickFormat("")

.orient("left")

.ticks(5);

//新增縱軸網格線

var yBar=svg.append("g")

.attr("class","inner_line")

.attr("transform","translate("+60+",0)")

.call(yInner);

//定義橫軸

var xAxis = d3.svg.axis()

.scale(xScale)

.orient("bottom")

.ticks(dataset.length);

//新增橫座標軸並通過編號獲取對應的橫軸標籤

var xBar=svg.append("g")

.attr("class","axis")

.attr("transform","translate(0," + 220 + ")")//用來上下平移橫軸位置

.call(xAxis)

.selectAll("text")

.text(function(d){return xMarks[d];});

//定義縱軸

var yAxis = d3.svg.axis()

.scale(yScale)

.orient("left")

.ticks(5);//這個是細分度

//新增縱軸

var yBar=svg.append("g")

.attr("class", "axis")

.attr("transform","translate("+60+",0)")

.call(yAxis);

//新增折線

var line = d3.svg.line()

.x(function(d,i){return xScale(i);})

.y(function(d){return yScale(d);});

var path=svg.append("path")

.attr("d", line(dataset))

.style("fill","#F00")

.style("fill","none")

.style("stroke-width",1)

.style("stroke","#09F")

.style("stroke-opacity",0.9);

//新增系列的小圓點

svg.selectAll("circle")

.data(dataset)

.enter()

.append("circle")

.attr("cx", function(d,i) {

return xScale(i);

})

.attr("cy", function(d) {

return yScale(d);

})

.attr("r",5)

.attr("fill","#09F");

</script>

</body>

</html>

Css檔案程式碼:

body{

height: 100%;

}

.title{font-family:Arial,微軟雅黑;font-size:18px;text-anchor:middle;}

.subTitle{font-family:Arial,宋體;font-size:12px;text-anchor:middle;fill:#666}

.axis path,

.axis line {

fill: none;

stroke: black;

shape-rendering: crispEdges;

}

.axis text {

font-family: sans-serif;

font-size: 11px;

fill:#999;

}

.inner_line path,

.inner_line line {

fill: none;

stroke:#E7E7E7;

shape-rendering: crispEdges;

}