~~~
<script type="text/javascript" src="api/d3.js"></script>
<script type="text/javascript">
//向body標簽增加svg子元素
var svg = d3.select('body')
.append('svg')
.attr({
"width": 700,
"height": 500,
});
//默認數據結構
var array = [
[100, 100],
[150, 150],
[200, 100],
[250, 150],
[300, 100],
[350, 150]
];
//構造默認線性生成器
var line = d3.svg.line();
line.interpolate("basis")
//增加折線
var area = d3.svg.area()
.y0(600); //基線
Draw()
function Draw(type_) {
if (!type_ || type_ == "line") {
type_ = "line"
chart_ = line
}else{
chart_ = area;
}
var path_ = svg.selectAll(".chart").data([array]);
path_.enter()
.append('path')
.attr({
"class":"chart",
"transform": "translate(0,0)"
})
.style({
// "stroke": "steelblue",
"stroke-width": 5,
// "fill": "while"
})
.each(function() {
this._current = "#fff"//[array[0], array[0]]
});
path_
.transition()
.duration(2000)
.attrTween("stroke",function(d) {
if (type_ == "area") {
var color = d3.interpolate(this._current,"steelblue");
return function(t) {
return color(t)
}
} else {
var color = d3.interpolate(this._current,"steelblue");
return function(t) {
return color(t)
}
}
})
.attrTween("fill",function(d) {
if (type_ == "area") {
var color = d3.interpolate(this._current,"steelblue");
return function(t) {
return color(t)
}
} else {
var color = d3.interpolate(this._current,"#fff");
return function(t) {
return color(t)
}
}
})
.attrTween("d", function(d) {
return lineTween.call(this, array)
})
function lineTween(b) {
var num = array.length;
var arr_ = [];
for(var i = 0; i <= num; i++) {
arr_.push(1 / num * i)
}
return function(t) {
var i = 0
while(arr_[i] < t) {
i++;
}
var new_arr = interpolateArrays(i, t)
function interpolateArrays(index, time, array) {
index--;
if(!array) array = b;
var fixed_arr = array.slice(0, index);
var current_arr = array.slice(index, index + 2);
var line_interpolate = d3.interpolate([current_arr[0], current_arr[0]], current_arr);
/**
* time分段換算
*/
var r = arr_.slice(index, index + 2)
var scale = d3.scale.linear()
.domain(r)
.range([0, 1]);
var slice_arr = line_interpolate(scale(t));
return d3.merge([fixed_arr, slice_arr])
}
return chart_(new_arr)
// return i(t);
}
}
}
</script>
~~~
- 1.Mock.js
- 2.conic-gradient 圓錐漸變
- 3.ES6 Module學習筆記
- 4.ES6函數擴展學習筆記
- 5.導入topojson模塊的坑
- 6.git 內部分享
- 7.npm install --save
- 8.nvm和nrm
- 9.刪除node_modules文件夾
- 10.es6 symbol
- 11.Set和Map數據結構
- 12.chrome控制臺的$0
- 13.d3-ordinal
- 14.Object.assign() 和lodash的merge()
- 15.echarts x軸坐標文字顯示不全
- 16.echarts地圖配置項--中文
- 17.webpack自動瀏覽器打開插件
- 18.D3線條和面積動畫--未采用
- 19.投影濾鏡
- 20.文本擋住觸發事件
- 21圖表用法
- 22.大膽的表現自己把
- 23.裁剪clip-path
- 24svg線條動畫的反向和時間誤差
- 25.visibility和display的區別
- 26.SVG濾鏡
- 27windo命令行的坑
- 28.textContent與innerText的不同
- 29.CSS3炫酷文本
- 30.更改webpack配置文件路徑
- 31.大胖給我做的css codereivew
- 32.定義接口不要限定死
- 33.不使用浮動,用inline-block平分出現換行問題
- 34.輸入框的校驗
- 35.handlbars的registerHelper
- 36.animation-fill-mode
- 37.svg嵌套HTML,實現文本換行
- 38.SVN出現黃色感嘆號
- 39.typeof與instanceof
- 40.SVG里面謹慎設置font-family
- 41.新腳手架里的相對路徑問題