01|如何用D3.js建一個(gè)簡(jiǎn)單的折線圖

Step1

新建一個(gè)文件夾linechart,里面新建一個(gè)HTML頁(yè)面命名linechart;一個(gè)css文件夾,里面建一個(gè)樣式表style.css;一個(gè)js文件夾,里面健一個(gè)js文件index.js;所有文件名可以根據(jù)自己習(xí)慣更改。

Step2

在html頁(yè)面head標(biāo)簽引入外部樣式表。

<link rel="stylesheet" href="css/style.css" media="screen" type="text/css"/>

Step3

我在鏈接樣式表的時(shí)候,覺(jué)得找文件路徑很費(fèi)勁,也不知道對(duì)不對(duì)。找到一個(gè)很好的檢驗(yàn)方式,在body標(biāo)簽中加上這段代碼

<a href="css/style.css">樣式</a>

就可以直接點(diǎn)擊鏈接,查看是不是對(duì)應(yīng)的樣式表了,js文件也可以這么操作。

Step4

在body標(biāo)簽中,設(shè)置一個(gè)圖表容器,寫一個(gè)div,id=“container”,然后在css里定義容器樣式。

#container{
background:#ddd;
width:500;
height:250;
}

Step5

在body里最后面,鏈接D3,和本地自己的js文件。

<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="js/index.js"></script>

Step6

在js里,select選擇剛剛建立好的div容器的id,用append建一個(gè)svg畫布,并設(shè)置hight和weight兩個(gè)變量。

//svg
var svg = d3.select("#container")
.append("svg")

Step7 完整的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;
//svg
var svg = d3.select("#container")
.append("svg")
//width,height
.attr("width",width)//attribute
.attr("height",height)
var g = d3.select("svg")
.append("g")
.attr("transform","translate(" + margin.left + "," + margin.top + ")")
var data =[1,3,5,7,8,4,3,7]
var scale_x = d3.scaleLinear()
    .domain([0, data.length-1])
    .range([0,g_width])
var scale_y = d3.scaleLinear()
    .domain([0, d3.max(data)])
    .range([g_height,0])
var line_generateor = d3.line()
    .x(function(d,i){ return scale_x(i);})//0,1,2,3
    .y(function(d){ return scale_y(d);})//1,3,5
    .curve(d3.curveCardinal)
d3.select("g")
.append("path")
.attr("d",line_generateor(data))//d="M1,0L20"
//x
var x_axis = d3.axisBottom(scale_x);
var y_axis = d3.axisLeft(scale_y);
g.append("g")
.call(x_axis)
.attr('transform','translate(0,'+g_height+')')
//y
g.append("g")
.call(y_axis)
.append("text")
.text('Price($)')
.attr("transform","rotate(-90)")//旋轉(zhuǎn)
.attr("text-anchor","end")//與末端對(duì)齊
.attr("dy","1em")
?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容