D3.js学习(七)
2013-10-21 11:37
204 查看
上一节中我们学会了如何旋转x轴标签以及自定义标签内容,在这一节中,我们将接触动画(transition)
首先,我们要在页面上添加一个按钮,当我们点击这个按钮时,调用我们的动画。所以,我们还需要在原来的基础上添加两个东西。
[code]<inputname="updateButton"
[/code]
[code]//再次获取数据
[/code]
在上面的代码中,我们首先要获取一个组先的数据,所以,我们从新的数据文件(data-alt.tsv)中读取新的数据。然后,仿造前面绘制图表的方法来进行绘制,不同的是,这里加入一个新的方法-transition()。
transiton(int):使图表从一个状态过渡到另一个状态。括号里面可以是一个整数,表示动画执行的时长,当然也可以是一个ease(type[,arguments…])方法,来表示丰富的运动。
目前的代码为:
ViewCode
下节我们将把图表中的曲线图变成散点图,以及添加提示框(Tooltips)效果。
首先,我们要在页面上添加一个按钮,当我们点击这个按钮时,调用我们的动画。所以,我们还需要在原来的基础上添加两个东西。
添加一个按钮
<divid="option">
[code]<inputname="updateButton"
type="button"
value="Update"
onclick="updateData()"
/>
</div>
[/code]
添加一个动画函数
functionupdateData(){
[code]//再次获取数据
d3.tsv("../data/data-alt.tsv",function(error,data){
data.forEach(function(d){
d.date=parseDate(d.date);
d.close=+d.close;
});
//设置数据的规模
x.domain(d3.extent(data,function(d){returnd.date}));
y.domain([0,d3.max(data,function(d){returnd.close})]);
//选择我们想要应用变化的部分
varsvg=d3.select("body").transition();
//变化
svg.select(".line")
.duration(750)
.attr("d",valueline(data));
svg.select(".x.axis")
.duration(750)
.call(xAxis);
svg.select(".y.axis")
.duration(750)
.call(yAxis);
});
}
[/code]
在上面的代码中,我们首先要获取一个组先的数据,所以,我们从新的数据文件(data-alt.tsv)中读取新的数据。然后,仿造前面绘制图表的方法来进行绘制,不同的是,这里加入一个新的方法-transition()。
transiton(int):使图表从一个状态过渡到另一个状态。括号里面可以是一个整数,表示动画执行的时长,当然也可以是一个ease(type[,arguments…])方法,来表示丰富的运动。
目前的代码为:
<!DOCTYPEhtml>
<metacharset="utf-8">
<style>/*settheCSS*/
body{font:12pxArial;}
path{
stroke:steelblue;
stroke-width:2;
fill:none;
}
.axispath,
.axisline{
fill:none;
stroke:grey;
stroke-width:1;
shape-rendering:crispEdges;
}
</style>
<body>
<divid="option">
<inputname="updateButton"
type="button"
value="Update"
onclick="updateData()"/>
</div>
<!--loadthed3.jslibrary-->
<scripttype="text/javascript"src="d3/d3.v3.js"></script>
<script>
//Setthedimensionsofthecanvas/graph
varmargin={top:30,right:20,bottom:30,left:50},
width=600-margin.left-margin.right,
height=270-margin.top-margin.bottom;
//Parsethedate/time
varparseDate=d3.time.format("%d-%b-%y").parse;
//Settheranges
varx=d3.time.scale().range([0,width]);
vary=d3.scale.linear().range([height,0]);
//Definetheaxes
varxAxis=d3.svg.axis().scale(x)
.orient("bottom").ticks(5);
varyAxis=d3.svg.axis().scale(y)
.orient("left").ticks(5);
//Definetheline
varvalueline=d3.svg.line()
.x(function(d){returnx(d.date);})
.y(function(d){returny(d.close);});
//Addsthesvgcanvas
varsvg=d3.select("body")
.append("svg")
.attr("width",width+margin.left+margin.right)
.attr("height",height+margin.top+margin.bottom)
.append("g")
.attr("transform","translate("+margin.left+","+margin.top+")");
//Gettheinitialdata
d3.tsv("data/data.tsv",function(error,data){
data.forEach(function(d){
d.date=parseDate(d.date);
d.close=+d.close;
});
//Scaletherangeofthedata
x.domain(d3.extent(data,function(d){returnd.date;}));
y.domain([0,d3.max(data,function(d){returnd.close;})]);
//Addthevaluelinepath.
svg.append("path")
.attr("class","line")
.attr("d",valueline(data));
//AddtheXAxis
svg.append("g")
.attr("class","xaxis")
.attr("transform","translate(0,"+height+")")
.call(xAxis);
//AddtheYAxis
svg.append("g")
.attr("class","yaxis")
.call(yAxis);
});
//**Updatedatasection(Calledfromtheonclick)
functionupdateData(){
//Getthedataagain
d3.tsv("data/data-alt.tsv",function(error,data){
data.forEach(function(d){
d.date=parseDate(d.date);
d.close=+d.close;
});
//Scaletherangeofthedataagain
x.domain(d3.extent(data,function(d){returnd.date;}));
y.domain([0,d3.max(data,function(d){returnd.close;})]);
//Selectthesectionwewanttoapplyourchangesto
varsvg=d3.select("body").transition();
//Makethechanges
svg.select(".line")//changetheline
.duration(750)
.attr("d",valueline(data));
svg.select(".x.axis")//changethexaxis
.duration(750)
.call(xAxis);
svg.select(".y.axis")//changetheyaxis
.duration(750)
.call(yAxis);
});
}
</script>
</body>
ViewCode
下节我们将把图表中的曲线图变成散点图,以及添加提示框(Tooltips)效果。
相关文章推荐
- js数组的基本用法及数组根据下标(数值或字符)移除元素
- js表单验证
- 浏览器的JavaScript引擎的识别方法
- JS验证
- javascript 验证 只能输入数字和一个小数点
- js中的常用方法
- json字符串转对象的时候,时间格式报错“不是有效的 AllXsd 值。”
- 用Javascript判断图片是否存在,不存在则显示默认图片的代码
- JavaScript变量声明的陷阱
- Jackson 框架,轻易转换JSON
- js官网判断是否手机跳转到手机页面
- js解析xml不成功
- JS判断登陆端是PC还是手机
- JS将html转换成txt
- IIS支持解析json
- jsp页面,数据传递四种方式
- JS操作Cookie写入和读取实例代码
- JavaScript中with/this用法
- JScript 正则表达式语法表
- 整理一些js中常见的问题