~~~
<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.新脚手架里的相对路径问题