上一章介紹了閾值比例尺:https://www.cnblogs.com/littleSpill/p/10825038.html。到目前全部的定量比例尺已經介紹完了。html
如今給你們介紹一下序數比例尺。面試
1 var ordinal = d3.scale.ordinal() 2 .domain([1,2,3,4,5]) 3 .range([10,20,30,40,50]) 4
5 console.log(ordinal(1)) //輸出10
6
7 console.log(ordinal(3)) //輸出30
8
9 console.log(ordinal(5)) //輸出50
10
11 console.log(ordinal(8)) //輸出10
1 var ordinal2 = d3.scale.ordinal() 2 .domain([1,2,3,4,5]) 3 .rangePoints([0,100]) 4
5 console.log(ordinal2.range()) //輸出 [0, 25, 50, 75, 100]
6
7 console.log(ordinal2(1)) //輸出0
8
9 console.log(ordinal2(3)) //輸出50
10
11 console.log(ordinal2(5)) //輸出100
1 ordinal2.rangePoints([0,100],5) 2 3 console.log(ordinal2.range()) //輸出[27.77777777777778, 38.888888888888886, 50, 61.11111111111111, 72.22222222222223]
1 ordinal2.rangeRoundPoints([0,100],5) 2
3 console.log(ordinal2.range()) //輸出[28, 39, 50, 61, 72]結果被四捨五入取整了
1 var bands = d3.scale.ordinal() 2 .domain([1,2,3,4,5]) 3 .rangeBands([0,100]) 4
5 console.log(bands.range()) //輸出[0, 20, 40, 60, 80]
6
7 console.log(bands.rangeBand()) //輸出20
1 bands.rangeBands([0,100],0.5,0.2) 2
3 console.log(bands.range()) //輸出[4.081632653061225, 24.489795918367346, 44.89795918367347, 65.3061224489796, 85.71428571428571]
4
5 console.log(bands.rangeBand()) //輸出10.204081632653061
1 var color = d3.scale.category10(); 2
3 console.log(color(1)) //輸出#1f77b4
4
5 console.log(color("zhangsan")) //輸出#ff7f0e
1 var width = 600; //svg繪製區域的寬度
2 var height = 600; //svg繪製區域的高度
3 var dataset = d3.range(5); //返回[0,1,2,3,4,5]
4
5 var color2 = d3.scale.category10(); //定義表示顏色的序數比例尺
6
7 var svg = d3.select("#body") //選擇id爲body的div
8 .append("svg") //在<body>中添加<avg>
9 .attr("width",width) //設定<svg>的寬度屬性
10 .attr("height",height) //設定<svg>的高度屬性
11
12 //繪製圓
13 svg.selectAll("circle") //選擇全部的圓
14 .data(dataset) //綁定數據
15 .enter() //獲取enter部分
16 .append("circle") //添加ciecle元素,使其與綁定數組的長度一致
17 .attr("cx",function(d,i){return 30 + i*80}) //設定圓的x方向的位置
18 .attr("cy",100) //設定圓的y方向的位置
19 .attr("r",30) //設定圓的半徑
20 .attr("fill",function(d,i){ //設定圓的顏色
21 return color2(i) 22 })